【物料管理】 绑定工艺

dev
siontion 5 months ago
parent 8776246218
commit 232fc8ae5a

@ -67,4 +67,10 @@ public class MaterialExcelVO {
@ExcelProperty("备注")
private String description;
@ExcelProperty("工艺路线id")
private Long processId;
@ExcelProperty("安全库存量")
private Long safeAmount;
}

@ -140,4 +140,13 @@ public class MaterialRespVO {
@Schema(description = "库存数量")
private BigDecimal stockQuantity;
@Schema(description = "工艺路线id")
private Long processId;
@Schema(description = "工艺路线名称")
private String processName;
@Schema(description = "安全库存量")
private Long safeAmount;
}

@ -99,4 +99,8 @@ public class MaterialSaveReqVO {
@Schema(description = "工艺路线id")
private Long processId;
@Schema(description = "安全库存量")
private Long safeAmount;
}

@ -153,6 +153,10 @@ public class MaterialDO extends TenantBaseDO {
private Integer inventoryProperty;
private Long processId;
private Long safeAmount;
@TableField(exist = false)
private String procedureName;
@TableField(exist = false)
private String mainSupplierName;

@ -6,6 +6,7 @@ import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.chanko.yunxi.mes.module.biz.controller.admin.material.vo.MaterialPageReqVO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.procedure.ProcedureDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.biz.enums.YesOrNoEnum;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@ -26,8 +27,9 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
default PageResult<MaterialDO> selectPage(MaterialPageReqVO reqVO) {
MPJLambdaWrapperX<MaterialDO> query = new MPJLambdaWrapperX<>();
query.selectAll(MaterialDO.class)
.select("s.name as mainSupplierName")
.select("s.name as mainSupplierName","p.name as procedureName")
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, MaterialDO::getMainSupplierId)
.leftJoin(ProcedureDO.class,"p",ProcedureDO::getId,MaterialDO::getProcessId)
.disableSubLogicDel()
.orderByDesc(MaterialDO::getId);
query.likeIfPresent(MaterialDO::getSpec, reqVO.getSpec())

@ -135,17 +135,27 @@ public class MaterialServiceImpl implements MaterialService {
// 重复性判断
validateMaterialRepeat(updateObj.getCode(), updateReqVO.getId());
materialMapper.updateById(updateObj);
saveProcess(updateReqVO);
}
private void saveProcess(MaterialSaveReqVO updateReqVO){
List<ProcessDetailDO> result = processDetailMapper.selectList(ProcessDetailDO::getMaterialId,updateReqVO.getId());
if(result != null){
for(ProcessDetailDO item : result){
if(item.getProcessId().equals(updateReqVO.getProcessId())){
if(updateReqVO.getProcessId()!=null && updateReqVO.getProcessId()>0) {
ProcessDetailDO result = processDetailMapper
.selectOne(new LambdaQueryWrapper<ProcessDetailDO>()
.eq(true, ProcessDetailDO::getMaterialId, updateReqVO.getId())
.eq(true, ProcessDetailDO::getProcessId, updateReqVO.getProcessId()));
if (result == null ) {
result = new ProcessDetailDO();
result.setType(2);
result.setMaterialId(updateReqVO.getId());
result.setProcessId(updateReqVO.getProcessId());
processDetailMapper.insert(result);
}
}
}
}

@ -1,6 +1,8 @@
package com.chanko.yunxi.mes.module.biz.service.process;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.processdetail.ProcessDetailDO;
import com.chanko.yunxi.mes.module.biz.dal.mysql.material.MaterialMapper;
import com.chanko.yunxi.mes.module.biz.dal.mysql.processdetail.ProcessDetailMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -34,6 +36,9 @@ public class ProcessServiceImpl implements ProcessService {
@Resource
private ProcessDetailMapper processDetailMapper;
@Resource
private MaterialMapper materialMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createProcess(ProcessSaveReqVO createReqVO) {
@ -93,8 +98,14 @@ public class ProcessServiceImpl implements ProcessService {
// 产品处理
if(createReqVO.getMatItemDOList() != null){
for(MatListReqVO item : createReqVO.getMatItemDOList()){
MaterialDO materialDO = materialMapper.selectOne(MaterialDO::getId,item.getMaterialId());
if(item.getDeleteFlag().equals(1)){
processDetailMapper.deleteById(item.getId());
if(item.getId()>0 && materialDO != null){
// 存在物料与工序绑定数据时,删除物料上的工序
materialDO.setProcessId(null);
materialMapper.updateById(materialDO);
}
}else{
ProcessDetailDO processDetailDO = new ProcessDetailDO();
if(item.getId()>0){
@ -109,6 +120,18 @@ public class ProcessServiceImpl implements ProcessService {
processDetailDO.setMaterialId(item.getMaterialId());
processDetailMapper.insert(processDetailDO);
}
// 同步物料上的工序id
if(materialDO != null) {
materialDO.setProcessId(processId);
materialMapper.updateById(materialDO);
}
// 一个物料只能有一个工序
List<ProcessDetailDO> processDetailDOs = processDetailMapper.selectList(ProcessDetailDO::getMaterialId,item.getMaterialId());
processDetailDOs.forEach(map -> {
if(!map.getProcessId().equals(processId)){
processDetailMapper.deleteById(map);
}
});
}
}
}

@ -226,3 +226,4 @@ CREATE TABLE `base_process_detail` (
) ENGINE=InnoDB COMMENT='工艺路线明细表';
alter table base_material add COLUMN `process_id` BIGINT null comment '工艺路线id';
alter table base_material add COLUMN `safe_amount` BIGINT null comment '安全库存量';

Loading…
Cancel
Save