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 lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.annotation.Mock;
import org.nl.common.exception.BadRequestException;
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.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.service.param.dao.Param;
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
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 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 workArea;
private String trackNo;
private String bizid;
private List<Entrys> entrys;
@Data

View File

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

View File

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

View File

@@ -30,5 +30,6 @@ public class LineSideDto {
private String reportParam;
private String trackNo;
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.dao.MdMeMaterialbase;
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.service.WmsToZDWmdService;
import org.nl.wms.ext_manage.service.dto.ZDInventory;
@@ -77,6 +78,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
@Autowired
private IPmStockReturnService iPmStockReturnService;
@Autowired
private MesApi mesApi;
@Override
public Page<PmDemandDto> queryPage(PmDemandQuery query, PageQuery pageQuery) {
@@ -114,20 +117,40 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
@Override
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>()
.in(PmDemand::getWork_order, orders)
.eq(PmDemand::getIs_deleted,0));
if (count>0){
throw new BadRequestException("MES推送需求单失败需求单已存在");
}
}
for (PmDemandParam pmDemandParam : param) {
if (Objects.equals(pmDemandParam.getStatus(), "1")){
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);
}
}
}
@Override
public void update(PmDemandDto param) {
@@ -161,15 +184,22 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
}
final List<PmDemand> pmDemands = this.listByIds(ids);
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("删除失败,已经执行的需求单无法删除");
}
}
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));
}
}
@Override
public void allocateInventory(String id, String inventoryDis) {
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>()
.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()){
throw new BadRequestException("下推失败,单据状态不为已分配不能下推");
}
@@ -269,7 +300,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
.in(PmDemand::getWork_order, pmDemandDtos.stream()
.map(PmDemandDto::getWorkOrder)
.distinct()
.collect(Collectors.toList())));
.collect(Collectors.toList()))
.ne(PmDemand::getIs_deleted, 1));
if (pmDemandDtos.size() < allWorkCount){
throw new BadRequestException("存在未勾选完全的工单");
}
@@ -302,7 +334,8 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
final List<PmDemandDto> demandDtos = groupByWorkOrder.get(workOrder);
final int orderCount = this.count(new LambdaQueryWrapper<PmDemand>()
.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()){
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_DEMAND_CALL = "MES_URL_DEMAND_CALL";
public final static String MES_URL_DEMAND_DEL = "MES_URL_DEMAND_DEL";
/**
* 打印机ip
*/

View File

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

View File

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

View File

@@ -176,6 +176,7 @@
<el-table-column prop="materialno" label="物料编号" min-width="120" />
<el-table-column prop="materialname" label="物料名称" min-width="180" />
<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="warehouseno" label="仓库" min-width="60" />
<el-table-column prop="remark" label="备注" min-width="180" />