排产模块优化 / 排产单页面优化,排产模块优化 / 订单跟踪页面优化
This commit is contained in:
@@ -23,6 +23,7 @@ import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemReceiveBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeValidateBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemSortBo;
|
||||
import com.klp.flow.service.ISchProdScheduleItemService;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
|
||||
@@ -138,4 +139,9 @@ public class SchProdScheduleItemController extends BaseController {
|
||||
public R<SchProdScheduleItemMergeValidateVo> mergeValidate(@Validated @RequestBody SchProdScheduleItemMergeValidateBo validateBo) {
|
||||
return R.ok(iSchProdScheduleItemService.validateMerge(validateBo));
|
||||
}
|
||||
|
||||
@PostMapping("/sort")
|
||||
public R<Void> saveSort(@Validated @RequestBody SchProdScheduleItemSortBo sortBo) {
|
||||
return toAjax(iSchProdScheduleItemService.saveSort(sortBo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +135,10 @@ public class SchProdScheduleItem extends BaseEntity {
|
||||
* 工序ID
|
||||
*/
|
||||
private Long actionId;
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortNo;
|
||||
/**
|
||||
* 规格 例:1.0X1250
|
||||
*/
|
||||
|
||||
@@ -162,6 +162,10 @@ public class SchProdScheduleItemBo extends BaseEntity {
|
||||
* 工序ID
|
||||
*/
|
||||
private Long actionId;
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortNo;
|
||||
|
||||
/**
|
||||
* 规格 例:1.0X1250
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.klp.flow.domain.bo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SchProdScheduleItemSortBo {
|
||||
|
||||
@NotEmpty(message = "scheduleIds不能为空")
|
||||
private List<Long> scheduleIds;
|
||||
}
|
||||
|
||||
@@ -202,6 +202,11 @@ public class SchProdScheduleItemVo {
|
||||
@TableField(exist = false)
|
||||
private String stepName;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sortNo;
|
||||
|
||||
/**
|
||||
* 规格 例:1.0X1250
|
||||
*/
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemReceiveBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeValidateBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemSortBo;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
|
||||
@@ -70,4 +71,9 @@ public interface ISchProdScheduleItemService {
|
||||
* 合并校验:检查待合并记录来源产需单的 header 字段是否一致
|
||||
*/
|
||||
SchProdScheduleItemMergeValidateVo validateMerge(SchProdScheduleItemMergeValidateBo validateBo);
|
||||
|
||||
/**
|
||||
* 保存已排产拖拽排序
|
||||
*/
|
||||
Boolean saveSort(SchProdScheduleItemSortBo sortBo);
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.klp.flow.domain.bo.SchProdScheduleItemBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemReceiveBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemMergeValidateBo;
|
||||
import com.klp.flow.domain.bo.SchProdScheduleItemSortBo;
|
||||
import com.klp.flow.domain.vo.SchProdScheduleItemVo;
|
||||
import com.klp.flow.domain.vo.SchProdScheduleItemMergeValidateVo;
|
||||
import com.klp.flow.domain.SchProdScheduleItem;
|
||||
@@ -56,7 +57,12 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
||||
*/
|
||||
@Override
|
||||
public SchProdScheduleItemVo queryById(Long scheduleId){
|
||||
return baseMapper.selectVoById(scheduleId);
|
||||
SchProdScheduleItemVo vo = baseMapper.selectVoById(scheduleId);
|
||||
if (vo != null) {
|
||||
fillStepName(java.util.Collections.singletonList(vo));
|
||||
fillMissingHeaderFields(java.util.Collections.singletonList(vo));
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,6 +74,7 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
||||
Page<SchProdScheduleItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
if (result.getRecords() != null && !result.getRecords().isEmpty()) {
|
||||
fillStepName(result.getRecords());
|
||||
fillMissingHeaderFields(result.getRecords());
|
||||
}
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
@@ -81,6 +88,7 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
||||
List<SchProdScheduleItemVo> list = baseMapper.selectVoList(lqw);
|
||||
if (list != null && !list.isEmpty()) {
|
||||
fillStepName(list);
|
||||
fillMissingHeaderFields(list);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
@@ -121,6 +129,8 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRowRemark()), SchProdScheduleItem::getRowRemark, bo.getRowRemark());
|
||||
// actionId
|
||||
lqw.eq(bo.getActionId() != null, SchProdScheduleItem::getActionId, bo.getActionId());
|
||||
lqw.orderByAsc(SchProdScheduleItem::getSortNo);
|
||||
lqw.orderByAsc(SchProdScheduleItem::getScheduleId);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@@ -148,6 +158,149 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
||||
}
|
||||
}
|
||||
|
||||
private void fillMissingHeaderFields(List<SchProdScheduleItemVo> voList) {
|
||||
List<SchProdScheduleItemVo> missingList = voList.stream()
|
||||
.filter(vo -> StringUtils.isBlank(vo.getCustomerName())
|
||||
|| StringUtils.isBlank(vo.getBusinessUser())
|
||||
|| StringUtils.isBlank(vo.getBusinessPhone())
|
||||
|| vo.getDeliveryCycle() == null
|
||||
|| StringUtils.isBlank(vo.getProductType())
|
||||
|| StringUtils.isBlank(vo.getUsePurpose()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (missingList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<String> scheduleNos = missingList.stream()
|
||||
.map(SchProdScheduleItemVo::getScheduleNo)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (scheduleNos.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<SchProdSchedule> headers = schProdScheduleMapper.selectList(
|
||||
Wrappers.<SchProdSchedule>lambdaQuery()
|
||||
.in(SchProdSchedule::getScheduleNo, scheduleNos)
|
||||
);
|
||||
Map<String, SchProdSchedule> headerMap = headers.stream()
|
||||
.collect(Collectors.toMap(SchProdSchedule::getScheduleNo, h -> h, (v1, v2) -> v1));
|
||||
|
||||
for (SchProdScheduleItemVo vo : missingList) {
|
||||
SchProdSchedule header = headerMap.get(vo.getScheduleNo());
|
||||
if (header == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean changed = false;
|
||||
SchProdScheduleItem update = new SchProdScheduleItem();
|
||||
update.setScheduleId(vo.getScheduleId());
|
||||
|
||||
if (StringUtils.isBlank(vo.getCustomerName()) && StringUtils.isNotBlank(header.getCustomerName())) {
|
||||
vo.setCustomerName(header.getCustomerName());
|
||||
update.setCustomerName(header.getCustomerName());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getBusinessUser()) && StringUtils.isNotBlank(header.getBusinessUser())) {
|
||||
vo.setBusinessUser(header.getBusinessUser());
|
||||
update.setBusinessUser(header.getBusinessUser());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getBusinessPhone()) && StringUtils.isNotBlank(header.getBusinessPhone())) {
|
||||
vo.setBusinessPhone(header.getBusinessPhone());
|
||||
update.setBusinessPhone(header.getBusinessPhone());
|
||||
changed = true;
|
||||
}
|
||||
if (vo.getDeliveryCycle() == null && header.getDeliveryCycle() != null) {
|
||||
vo.setDeliveryCycle(header.getDeliveryCycle());
|
||||
update.setDeliveryCycle(header.getDeliveryCycle());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getProductType()) && StringUtils.isNotBlank(header.getProductType())) {
|
||||
vo.setProductType(header.getProductType());
|
||||
update.setProductType(header.getProductType());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getUsePurpose()) && StringUtils.isNotBlank(header.getUsePurpose())) {
|
||||
vo.setUsePurpose(header.getUsePurpose());
|
||||
update.setUsePurpose(header.getUsePurpose());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getThicknessTolerance()) && StringUtils.isNotBlank(header.getThicknessTolerance())) {
|
||||
vo.setThicknessTolerance(header.getThicknessTolerance());
|
||||
update.setThicknessTolerance(header.getThicknessTolerance());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getWidthTolerance()) && StringUtils.isNotBlank(header.getWidthTolerance())) {
|
||||
vo.setWidthTolerance(header.getWidthTolerance());
|
||||
update.setWidthTolerance(header.getWidthTolerance());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getSurfaceQuality()) && StringUtils.isNotBlank(header.getSurfaceQuality())) {
|
||||
vo.setSurfaceQuality(header.getSurfaceQuality());
|
||||
update.setSurfaceQuality(header.getSurfaceQuality());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getSurfaceTreatment()) && StringUtils.isNotBlank(header.getSurfaceTreatment())) {
|
||||
vo.setSurfaceTreatment(header.getSurfaceTreatment());
|
||||
update.setSurfaceTreatment(header.getSurfaceTreatment());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getInnerDiameter()) && StringUtils.isNotBlank(header.getInnerDiameter())) {
|
||||
vo.setInnerDiameter(header.getInnerDiameter());
|
||||
update.setInnerDiameter(header.getInnerDiameter());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getOuterDiameter()) && StringUtils.isNotBlank(header.getOuterDiameter())) {
|
||||
vo.setOuterDiameter(header.getOuterDiameter());
|
||||
update.setOuterDiameter(header.getOuterDiameter());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getPackReq()) && StringUtils.isNotBlank(header.getPackReq())) {
|
||||
vo.setPackReq(header.getPackReq());
|
||||
update.setPackReq(header.getPackReq());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getCutEdgeReq()) && StringUtils.isNotBlank(header.getCutEdgeReq())) {
|
||||
vo.setCutEdgeReq(header.getCutEdgeReq());
|
||||
update.setCutEdgeReq(header.getCutEdgeReq());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getSingleCoilWeight()) && StringUtils.isNotBlank(header.getSingleCoilWeight())) {
|
||||
vo.setSingleCoilWeight(header.getSingleCoilWeight());
|
||||
update.setSingleCoilWeight(header.getSingleCoilWeight());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getWeightDeviation()) && StringUtils.isNotBlank(header.getWeightDeviation())) {
|
||||
vo.setWeightDeviation(header.getWeightDeviation());
|
||||
update.setWeightDeviation(header.getWeightDeviation());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getOtherTechReq()) && StringUtils.isNotBlank(header.getOtherTechReq())) {
|
||||
vo.setOtherTechReq(header.getOtherTechReq());
|
||||
update.setOtherTechReq(header.getOtherTechReq());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getPaymentDesc()) && StringUtils.isNotBlank(header.getPaymentDesc())) {
|
||||
vo.setPaymentDesc(header.getPaymentDesc());
|
||||
update.setPaymentDesc(header.getPaymentDesc());
|
||||
changed = true;
|
||||
}
|
||||
if (StringUtils.isBlank(vo.getRemark()) && StringUtils.isNotBlank(header.getRemark())) {
|
||||
vo.setRemark(header.getRemark());
|
||||
update.setRemark(header.getRemark());
|
||||
changed = true;
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
baseMapper.updateById(update);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增排产单主加明细可合并
|
||||
*/
|
||||
@@ -504,6 +657,22 @@ public class SchProdScheduleItemServiceImpl implements ISchProdScheduleItemServi
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean saveSort(SchProdScheduleItemSortBo sortBo) {
|
||||
List<Long> scheduleIds = sortBo.getScheduleIds();
|
||||
for (int i = 0; i < scheduleIds.size(); i++) {
|
||||
Long id = scheduleIds.get(i);
|
||||
baseMapper.update(
|
||||
null,
|
||||
Wrappers.<SchProdScheduleItem>lambdaUpdate()
|
||||
.set(SchProdScheduleItem::getSortNo, i + 1)
|
||||
.eq(SchProdScheduleItem::getScheduleId, id)
|
||||
);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 反射获取字段值(用于动态字段比较 — SchProdSchedule header)
|
||||
*/
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
<result property="returnReason" column="return_reason"/>
|
||||
<result property="scheduleDetailIds" column="schedule_detail_ids"/>
|
||||
<result property="actionId" column="action_id"/>
|
||||
<result property="sortNo" column="sort_no"/>
|
||||
<result property="spec" column="spec"/>
|
||||
<result property="material" column="material"/>
|
||||
<result property="scheduleWeight" column="schedule_weight"/>
|
||||
|
||||
Reference in New Issue
Block a user