fix:需求单失效删除逻辑;倒冲库存查询按钮;

add:报工单唯一id校验;
This commit is contained in:
zhaoyf
2026-08-06 19:22:28 +08:00
parent b7e0c2b771
commit 648fb179ed
10 changed files with 83 additions and 19 deletions

View File

@@ -6,19 +6,15 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.annotation.Mock;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.wms.ext_manage.enums.EXTConstant;
import org.nl.wms.ext_manage.mes.service.MesResponse; import org.nl.wms.ext_manage.mes.service.MesResponse;
import org.nl.wms.ext_manage.mes.service.dto.WorkOrderBomItem; import org.nl.wms.ext_manage.mes.service.dto.WorkOrderBomItem;
import org.nl.wms.ext_manage.util.AcsUtil;
import org.nl.wms.pm_manage.demand.service.dao.PmDemand;
import org.nl.wms.system_manage.enums.SysParamConstant; import org.nl.wms.system_manage.enums.SysParamConstant;
import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.system_manage.service.param.dao.Param;
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;import org.nl.common.base.ResponseData; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@@ -95,4 +91,29 @@ public class MesApi {
} }
} }
/**
* 需求单删除
*/
public void delMesDemand(String id){
final Param param = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode(SysParamConstant.MES_URL_DEMAND_DEL);
if (param ==null){
throw new BadRequestException("请传MES失败,未配置MES_URL地址");
}
String url = param.getValue();
try {
JSONObject requestParam = new JSONObject();
requestParam.put("reqId",id);
String resultMsg = HttpRequest.post(url)
.body(requestParam.toJSONString())
.execute().body();
JSONObject result = JSONObject.parseObject(resultMsg);
Integer respCode = result.getInteger("ResultCode");
if (respCode == null || respCode != 0) {
throw new BadRequestException("同步删除MES需求单"+id+"失败:" + result.getString("Message"));
}
} catch (Exception e) {
throw new BadRequestException("同步删除MES需求单异常" + e.getMessage());
}
}
} }

View File

@@ -21,6 +21,7 @@ public class ReceiveOutRequest {
private String cztype; private String cztype;
private String workArea; private String workArea;
private String trackNo; private String trackNo;
private String bizid;
private List<Entrys> entrys; private List<Entrys> entrys;
@Data @Data

View File

@@ -42,7 +42,8 @@ public class MesReportServiceImpl implements MesReportService {
try { try {
if (!StringUtils.isEmpty(workReportParam.getSn())){ if (!StringUtils.isEmpty(workReportParam.getSn())){
int count = iReceiveOutReturnService.count(new LambdaQueryWrapper<ReceiveOutReturn>() int count = iReceiveOutReturnService.count(new LambdaQueryWrapper<ReceiveOutReturn>()
.eq(ReceiveOutReturn::getSn, workReportParam.getSn())); .eq(ReceiveOutReturn::getSn, workReportParam.getSn())
.ne(ReceiveOutReturn::getStatus, StockReturnStatusEnum.ERROR.getCode()));
if (count > 0) { if (count > 0) {
throw new BadRequestException("报工倒扣同步失败SN码重复"); throw new BadRequestException("报工倒扣同步失败SN码重复");
} }
@@ -82,6 +83,7 @@ public class MesReportServiceImpl implements MesReportService {
sideDto.setReportParam(JSON.toJSONString(workReportParam)); sideDto.setReportParam(JSON.toJSONString(workReportParam));
sideDto.setTrackNo(workReportParam.getTrackNo()); sideDto.setTrackNo(workReportParam.getTrackNo());
sideDto.setWorkArea(workReportParam.getWorkArea()); sideDto.setWorkArea(workReportParam.getWorkArea());
sideDto.setBizid(workReportParam.getId());
pdaIosOutService.directConfirmByAfter(sideDto); pdaIosOutService.directConfirmByAfter(sideDto);
}catch (Exception ex){ }catch (Exception ex){
log.error("报工回传异常:{}",ex); log.error("报工回传异常:{}",ex);
@@ -92,6 +94,7 @@ public class MesReportServiceImpl implements MesReportService {
entity.setInvscheme("002"); entity.setInvscheme("002");
entity.setTranstype("020"); entity.setTranstype("020");
entity.setBiztime(LocalDate.now().toString()); entity.setBiztime(LocalDate.now().toString());
entity.setBizid(workReportParam.getId());
entity.setDeptno("01.09.14.02"); entity.setDeptno("01.09.14.02");
entity.setRequserno("WMS"); entity.setRequserno("WMS");
entity.setRequsername("WMS"); entity.setRequsername("WMS");

View File

@@ -434,6 +434,7 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
receiveOutRequest.setDeptno("01.09.14.02"); receiveOutRequest.setDeptno("01.09.14.02");
receiveOutRequest.setTrackNo(param.getTrackNo()); receiveOutRequest.setTrackNo(param.getTrackNo());
receiveOutRequest.setWorkArea(param.getWorkArea()); receiveOutRequest.setWorkArea(param.getWorkArea());
receiveOutRequest.setBizid(param.getBizid());
receiveOutRequest.setEntrys(entrys); receiveOutRequest.setEntrys(entrys);
ReceiveOutReturn entity = receiveOutReturnService.saveFromRequest( ReceiveOutReturn entity = receiveOutReturnService.saveFromRequest(
receiveOutRequest, StockReturnStatusEnum.TODO.getCode(), null,null,param.getReportParam()); receiveOutRequest, StockReturnStatusEnum.TODO.getCode(), null,null,param.getReportParam());

View File

@@ -30,5 +30,6 @@ public class LineSideDto {
private String reportParam; private String reportParam;
private String trackNo; private String trackNo;
private String workArea; private String workArea;
private String bizid;
} }

View File

@@ -17,6 +17,7 @@ import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.ext_manage.api.MesApi;
import org.nl.wms.ext_manage.enums.EXTConstant; import org.nl.wms.ext_manage.enums.EXTConstant;
import org.nl.wms.ext_manage.service.WmsToZDWmdService; import org.nl.wms.ext_manage.service.WmsToZDWmdService;
import org.nl.wms.ext_manage.service.dto.ZDInventory; import org.nl.wms.ext_manage.service.dto.ZDInventory;
@@ -77,6 +78,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
@Autowired @Autowired
private IPmStockReturnService iPmStockReturnService; private IPmStockReturnService iPmStockReturnService;
@Autowired
private MesApi mesApi;
@Override @Override
public Page<PmDemandDto> queryPage(PmDemandQuery query, PageQuery pageQuery) { public Page<PmDemandDto> queryPage(PmDemandQuery query, PageQuery pageQuery) {
@@ -114,20 +117,40 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
@Override @Override
public void batchCreate(List<PmDemandParam> param) { public void batchCreate(List<PmDemandParam> param) {
final List<String> orders = param.stream().map(PmDemandParam::getWorkOrder).collect(Collectors.toList()); final List<String> orders = param.stream()
.filter(item-> !Objects.equals(item.getStatus(), "1"))
.map(PmDemandParam::getWorkOrder).collect(Collectors.toList());
if (!orders.isEmpty()){
final int count = this.count(new LambdaQueryWrapper<PmDemand>() final int count = this.count(new LambdaQueryWrapper<PmDemand>()
.in(PmDemand::getWork_order, orders) .in(PmDemand::getWork_order, orders)
.eq(PmDemand::getIs_deleted,0)); .eq(PmDemand::getIs_deleted,0));
if (count>0){ if (count>0){
throw new BadRequestException("MES推送需求单失败需求单已存在"); throw new BadRequestException("MES推送需求单失败需求单已存在");
} }
}
for (PmDemandParam pmDemandParam : param) { for (PmDemandParam pmDemandParam : param) {
if (Objects.equals(pmDemandParam.getStatus(), "1")){ if (Objects.equals(pmDemandParam.getStatus(), "1")){
pmDemandParam.setStatus(DemandStatus.CANCEL.getValue()); pmDemandParam.setStatus(DemandStatus.CANCEL.getValue());
} PmDemand demand = new PmDemand();
demand.setId(pmDemandParam.getId());
demand.setCreator(pmDemandParam.getCreator());
demand.setCreate_time(pmDemandParam.getCreateTime());
demand.setPriority(pmDemandParam.getPriority());
demand.setStatus(pmDemandParam.getStatus());
demand.setWork_order(pmDemandParam.getWorkOrder());
demand.setSku_code(pmDemandParam.getSkuCode());
demand.setSku_name(pmDemandParam.getSkuName());
demand.setQty(pmDemandParam.getQty());
demand.setUnit(pmDemandParam.getUnit());
demand.setTarget_area(pmDemandParam.getTargetArea());
demand.setProduction_line(pmDemandParam.getProductionLine());
demand.setSn(pmDemandParam.getSn());
this.updateById(demand);
}else{
this.create(pmDemandParam); this.create(pmDemandParam);
} }
} }
}
@Override @Override
public void update(PmDemandDto param) { public void update(PmDemandDto param) {
@@ -161,15 +184,22 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
} }
final List<PmDemand> pmDemands = this.listByIds(ids); final List<PmDemand> pmDemands = this.listByIds(ids);
for (PmDemand pmDemand : pmDemands) { for (PmDemand pmDemand : pmDemands) {
if (!pmDemand.getStatus().equals(DemandStatus.CREATE.getValue()) && !pmDemand.getStatus().equals(DemandStatus.DIS.getValue())){ if (!pmDemand.getStatus().equals(DemandStatus.CREATE.getValue())
&& !pmDemand.getStatus().equals(DemandStatus.DIS.getValue())){
throw new BadRequestException("删除失败,已经执行的需求单无法删除"); throw new BadRequestException("删除失败,已经执行的需求单无法删除");
} }
} }
this.update(new LambdaUpdateWrapper<PmDemand>().in(PmDemand::getId,ids) for (String id : ids) {
mesApi.delMesDemand(id);
this.update(new LambdaUpdateWrapper<PmDemand>()
.eq(PmDemand::getId,id)
.set(PmDemand::getIs_deleted,1)); .set(PmDemand::getIs_deleted,1));
} }
}
@Override @Override
public void allocateInventory(String id, String inventoryDis) { public void allocateInventory(String id, String inventoryDis) {
PmDemand demand = this.getById(id); PmDemand demand = this.getById(id);
@@ -261,7 +291,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
} }
final int disCount = this.count(new LambdaQueryWrapper<PmDemand>() final int disCount = this.count(new LambdaQueryWrapper<PmDemand>()
.in(PmDemand::getId, pmDemandDtos.stream().map(PmDemandDto::getId).collect(Collectors.toList())) .in(PmDemand::getId, pmDemandDtos.stream().map(PmDemandDto::getId).collect(Collectors.toList()))
.eq(PmDemand::getStatus,DemandStatus.DIS.getValue())); .eq(PmDemand::getStatus,DemandStatus.DIS.getValue())
.ne(PmDemand::getIs_deleted, 1));
if (disCount<pmDemandDtos.size()){ if (disCount<pmDemandDtos.size()){
throw new BadRequestException("下推失败,单据状态不为已分配不能下推"); throw new BadRequestException("下推失败,单据状态不为已分配不能下推");
} }
@@ -269,7 +300,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
.in(PmDemand::getWork_order, pmDemandDtos.stream() .in(PmDemand::getWork_order, pmDemandDtos.stream()
.map(PmDemandDto::getWorkOrder) .map(PmDemandDto::getWorkOrder)
.distinct() .distinct()
.collect(Collectors.toList()))); .collect(Collectors.toList()))
.ne(PmDemand::getIs_deleted, 1));
if (pmDemandDtos.size() < allWorkCount){ if (pmDemandDtos.size() < allWorkCount){
throw new BadRequestException("存在未勾选完全的工单"); throw new BadRequestException("存在未勾选完全的工单");
} }
@@ -302,7 +334,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
final List<PmDemandDto> demandDtos = groupByWorkOrder.get(workOrder); final List<PmDemandDto> demandDtos = groupByWorkOrder.get(workOrder);
final int orderCount = this.count(new LambdaQueryWrapper<PmDemand>() final int orderCount = this.count(new LambdaQueryWrapper<PmDemand>()
.eq(PmDemand::getWork_order, workOrder) .eq(PmDemand::getWork_order, workOrder)
.in(PmDemand::getInventory_dis, ZD_STOR_SET)); .in(PmDemand::getInventory_dis, ZD_STOR_SET)
.ne(PmDemand::getIs_deleted, 1));
if (orderCount > demandDtos.size()){ if (orderCount > demandDtos.size()){
throw new BadRequestException("工单"+workOrder+"下推中鼎失败,存在未勾选的单子"); throw new BadRequestException("工单"+workOrder+"下推中鼎失败,存在未勾选的单子");
} }

View File

@@ -34,6 +34,7 @@ public class SysParamConstant {
*/ */
public final static String MES_URL_BOM = "MES_URL_BOM"; public final static String MES_URL_BOM = "MES_URL_BOM";
public final static String MES_URL_DEMAND_CALL = "MES_URL_DEMAND_CALL"; public final static String MES_URL_DEMAND_CALL = "MES_URL_DEMAND_CALL";
public final static String MES_URL_DEMAND_DEL = "MES_URL_DEMAND_DEL";
/** /**
* 打印机ip * 打印机ip
*/ */

View File

@@ -20,6 +20,7 @@ public class ReceiveOutReturn implements Serializable {
private String orgno; private String orgno;
private String billno; private String billno;
private String biztype; private String biztype;
private String bizid;
private String invscheme; private String invscheme;
private String transtype; private String transtype;
private String biztime; private String biztime;

View File

@@ -205,6 +205,7 @@ public class ReceiveOutReturnServiceImpl extends ServiceImpl<ReceiveOutReturnMap
entity.setReportParam(reportParam); entity.setReportParam(reportParam);
entity.setWorkArea(request.getWorkArea()); entity.setWorkArea(request.getWorkArea());
entity.setTrackNo(request.getTrackNo()); entity.setTrackNo(request.getTrackNo());
entity.setBizid(request.getBizid());
this.save(entity); this.save(entity);
saveRequestDetails(entity.getId(), request.getEntrys(), ioBillCode); saveRequestDetails(entity.getId(), request.getEntrys(), ioBillCode);
return entity; return entity;

View File

@@ -176,6 +176,7 @@
<el-table-column prop="materialno" label="物料编号" min-width="120" /> <el-table-column prop="materialno" label="物料编号" min-width="120" />
<el-table-column prop="materialname" label="物料名称" min-width="180" /> <el-table-column prop="materialname" label="物料名称" min-width="180" />
<el-table-column prop="unitno" label="单位" min-width="70" /> <el-table-column prop="unitno" label="单位" min-width="70" />
<el-table-column prop="easQty" label="库存信息" min-width="100" />
<el-table-column prop="baseqty" label="BOM数量" min-width="50" /> <el-table-column prop="baseqty" label="BOM数量" min-width="50" />
<el-table-column prop="warehouseno" label="仓库" min-width="60" /> <el-table-column prop="warehouseno" label="仓库" min-width="60" />
<el-table-column prop="remark" label="备注" min-width="180" /> <el-table-column prop="remark" label="备注" min-width="180" />