Merge branch '0.8.X' of http://49.232.154.205:10100/DeXun/klp-oa into 0.8.X
This commit is contained in:
@@ -21,6 +21,7 @@ import com.klp.aps.domain.vo.ApsPlanDetailVo;
|
||||
import com.klp.aps.domain.bo.ApsPlanDetailBo;
|
||||
import com.klp.aps.service.IApsPlanDetailService;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
|
||||
/**
|
||||
* 排产单明细
|
||||
@@ -96,4 +97,11 @@ public class ApsPlanDetailController extends BaseController {
|
||||
@PathVariable Long[] planDetailIds) {
|
||||
return toAjax(iApsPlanDetailService.deleteWithValidByIds(Arrays.asList(planDetailIds), true));
|
||||
}
|
||||
|
||||
// 根据排产单ID查询排产日期以及明细绑定的orderId,再根据这个orderId和排查时间查询返回钢卷
|
||||
@GetMapping("/coils/{planSheetId}")
|
||||
public R<List<WmsMaterialCoilVo>> getCoilsByPlanSheetId(@NotNull(message = "排产单ID不能为空")
|
||||
@PathVariable Long planSheetId) {
|
||||
return R.ok(iApsPlanDetailService.queryCoilsByPlanSheetId(planSheetId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.klp.common.core.domain.PageQuery;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
|
||||
/**
|
||||
* 排产单明细Service接口
|
||||
*
|
||||
@@ -55,4 +57,12 @@ public interface IApsPlanDetailService {
|
||||
* 根据排产单ID删除明细
|
||||
*/
|
||||
int deleteByPlanSheetIds(Collection<Long> planSheetIds);
|
||||
|
||||
/**
|
||||
* 根据排产单ID查询关联的钢卷列表(根据计划日期筛选钢卷创建时间)
|
||||
*
|
||||
* @param planSheetId 排产单ID
|
||||
* @return 钢卷列表
|
||||
*/
|
||||
List<WmsMaterialCoilVo> queryCoilsByPlanSheetId(Long planSheetId);
|
||||
}
|
||||
|
||||
@@ -8,17 +8,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import com.klp.domain.WmsCoilContractRel;
|
||||
import com.klp.domain.vo.WmsMaterialCoilVo;
|
||||
import com.klp.domain.vo.WmsCoilContractRelVo;
|
||||
import com.klp.domain.bo.WmsMaterialCoilBo;
|
||||
import com.klp.mapper.WmsCoilContractRelMapper;
|
||||
import com.klp.service.IWmsMaterialCoilService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.aps.domain.bo.ApsPlanDetailBo;
|
||||
import com.klp.aps.domain.vo.ApsPlanDetailVo;
|
||||
import com.klp.aps.domain.vo.ApsPlanSheetVo;
|
||||
import com.klp.aps.domain.entity.ApsPlanDetail;
|
||||
import com.klp.aps.mapper.ApsPlanDetailMapper;
|
||||
import com.klp.aps.mapper.ApsPlanSheetMapper;
|
||||
import com.klp.aps.service.IApsPlanDetailService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 排产单明细Service业务层处理
|
||||
@@ -31,6 +38,9 @@ import java.util.Collection;
|
||||
public class ApsPlanDetailServiceImpl implements IApsPlanDetailService {
|
||||
|
||||
private final ApsPlanDetailMapper baseMapper;
|
||||
private final ApsPlanSheetMapper planSheetMapper;
|
||||
private final WmsCoilContractRelMapper coilContractRelMapper;
|
||||
private final IWmsMaterialCoilService materialCoilService;
|
||||
|
||||
/**
|
||||
* 查询排产单明细
|
||||
@@ -207,4 +217,84 @@ public class ApsPlanDetailServiceImpl implements IApsPlanDetailService {
|
||||
public int deleteByPlanSheetIds(Collection<Long> planSheetIds) {
|
||||
return baseMapper.deleteByPlanSheetIds(planSheetIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WmsMaterialCoilVo> queryCoilsByPlanSheetId(Long planSheetId) {
|
||||
if (planSheetId == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
ApsPlanSheetVo planSheet = planSheetMapper.selectVoById(planSheetId);
|
||||
if (planSheet == null || planSheet.getPlanDate() == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
Date planDate = planSheet.getPlanDate();
|
||||
|
||||
LambdaQueryWrapper<ApsPlanDetail> detailQw = Wrappers.lambdaQuery();
|
||||
detailQw.eq(ApsPlanDetail::getPlanSheetId, planSheetId);
|
||||
detailQw.eq(ApsPlanDetail::getDelFlag, 0);
|
||||
List<ApsPlanDetailVo> details = baseMapper.selectVoList(detailQw);
|
||||
|
||||
List<Long> orderIds = details.stream()
|
||||
.map(ApsPlanDetailVo::getOrderId)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (orderIds.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<WmsCoilContractRel> relQw = Wrappers.lambdaQuery();
|
||||
relQw.in(WmsCoilContractRel::getContractId, orderIds);
|
||||
relQw.eq(WmsCoilContractRel::getDelFlag, 0);
|
||||
List<WmsCoilContractRelVo> coilRels = coilContractRelMapper.selectVoList(relQw);
|
||||
|
||||
Map<Long, List<Long>> coilIdMap = coilRels.stream()
|
||||
.filter(rel -> rel.getContractId() != null && rel.getCoilId() != null)
|
||||
.collect(Collectors.groupingBy(
|
||||
WmsCoilContractRelVo::getContractId,
|
||||
Collectors.mapping(WmsCoilContractRelVo::getCoilId, Collectors.toList())
|
||||
));
|
||||
|
||||
Set<Long> allCoilIds = coilIdMap.values().stream()
|
||||
.flatMap(List::stream)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (allCoilIds.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo();
|
||||
coilBo.setCoilIds(allCoilIds.stream().map(String::valueOf).collect(Collectors.joining(",")));
|
||||
coilBo.setByCreateTimeStart(getStartOfDay(planDate));
|
||||
coilBo.setByCreateTimeEnd(getEndOfDay(planDate));
|
||||
|
||||
return materialCoilService.queryList(coilBo);
|
||||
}
|
||||
|
||||
private Date getStartOfDay(Date date) {
|
||||
if (date == null) {
|
||||
return null;
|
||||
}
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
cal.set(Calendar.HOUR_OF_DAY, 0);
|
||||
cal.set(Calendar.MINUTE, 0);
|
||||
cal.set(Calendar.SECOND, 0);
|
||||
cal.set(Calendar.MILLISECOND, 0);
|
||||
return cal.getTime();
|
||||
}
|
||||
|
||||
private Date getEndOfDay(Date date) {
|
||||
if (date == null) {
|
||||
return null;
|
||||
}
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(date);
|
||||
cal.set(Calendar.HOUR_OF_DAY, 23);
|
||||
cal.set(Calendar.MINUTE, 59);
|
||||
cal.set(Calendar.SECOND, 59);
|
||||
cal.set(Calendar.MILLISECOND, 999);
|
||||
return cal.getTime();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@ public class ApsPlanSheetServiceImpl implements IApsPlanSheetService {
|
||||
|
||||
// ================== 【核心:前7列自动合并】 ==================
|
||||
int dataEndRow = r - 1;
|
||||
if (dataStartRow <= dataEndRow) {
|
||||
if (dataStartRow <= dataEndRow && dataEndRow > dataStartRow) {
|
||||
for (int col = 0; col < 7; col++) { // 0~6 共7列
|
||||
CellRangeAddress region = new CellRangeAddress(
|
||||
dataStartRow,
|
||||
|
||||
Reference in New Issue
Block a user