From f82ff6e0ebec7c41a9b8549ce4006f576e8fd4dd Mon Sep 17 00:00:00 2001 From: siontion Date: Sun, 18 Aug 2024 22:35:58 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B5=8B=E8=AF=95=E3=80=91=E7=94=A8?= =?UTF-8?q?=E5=8F=8B=E6=95=B0=E6=8D=AE=E5=8F=8D=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/chanjet/ChanjetController.java | 74 +++++++++-- .../admin/chanjet/ChanjetInterfaceEnum.java | 6 +- .../controller/admin/chanjet/dto/Process.java | 4 + .../biz/dal/dataobject/storage/StorageDO.java | 2 + .../dataobject/taskreport/TaskReportDO.java | 6 +- .../biz/dal/mysql/storage/StorageMapper.java | 2 + .../mysql/taskreport/TaskReportMapper.java | 20 ++- .../module/biz/manager/ChanjetManager.java | 115 +++++++++++++----- .../module/biz/manager/ChanjetSchedule.java | 4 +- sql/v1.0.0/2.business/1.structure.sql | 1 + 10 files changed, 184 insertions(+), 50 deletions(-) diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetController.java index 68672aa8..d067a562 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetController.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetController.java @@ -4,12 +4,18 @@ import com.chanjet.openapi.sdk.java.exception.ChanjetApiException; import com.chanjet.openapi.sdk.java.response.GetTokenResponse; import com.chanjet.openapi.sdk.java.response.RefreshTokenResponse; import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.tenant.core.aop.TenantIgnore; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.vo.BomMaterialReqVO; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.vo.BomMaterialVO; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.vo.QueryCurrentStockResVO; import com.chanko.yunxi.mes.module.biz.controller.admin.procedure.vo.ProcedureSaveReqVO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.projectorder.ProjectOrderDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskreport.TaskReportDO; +import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderMapper; import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.taskreport.TaskReportMapper; +import com.chanko.yunxi.mes.module.biz.enums.ProjectOrderStatusEnum; import com.chanko.yunxi.mes.module.biz.manager.ChanjetManager; import com.chanko.yunxi.mes.module.biz.manager.ChanjetSchedule; import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserSaveReqVO; @@ -56,6 +62,12 @@ public class ChanjetController { @Resource private ChanjetTokenHolder chanjetTokenHolder; + @Resource + private ProjectOrderMapper projectOrderMapper; + + @Resource + private TaskReportMapper taskReportMapper; + /** * OAuth回调地址接口 @@ -257,29 +269,69 @@ public class ChanjetController { @PermitAll @TenantIgnore @GetMapping("/chronicData") - @Operation(summary = "定时更新") + @Operation(summary = "定时更新(物料和库存)") @PreAuthorize("@ss.hasPermission('biz:storage:create')") @Scheduled(cron = "0 0 3 * * ?") public void synchronizeData() throws ChanjetApiException{ // chanjetManager.queryMaterial(); // //查询库存-现存量 // chanjetSchedule.queryStock(); -// //创建入库 -// chanjetSchedule.createStorageInOrder(); - chanjetManager.createProductionOrder(232L); + + //测试 +// chanjetManager.createProductionOrder(232L); +// sendProcedureReport2TPlus(); +// chanjetSchedule.createStorageOut(); + chanjetSchedule.createStorageInOrder(); } @PermitAll @TenantIgnore - @GetMapping("/sendData2TPlus") - @Operation(summary = "定时更新") + @GetMapping("/sendProductOrder2TPlus") + @Operation(summary = "定时更新(生产加工单)") @PreAuthorize("@ss.hasPermission('biz:storage:create')") - @Scheduled(cron = "0 0 2 * * ?") - public void synchronizeData2() throws ChanjetApiException{ - //查询库存-现存量 -// chanjetSchedule.createStorageOut(); + @Scheduled(cron = "0 0 0 * * ?") + public void sendProductOrder2TPlus() throws ChanjetApiException{ + List projectOrderDOS = projectOrderMapper.selectList(new LambdaQueryWrapperX(){{ + eq(ProjectOrderDO::getOrderStatus, ProjectOrderStatusEnum.DISPATCH.getCode()); + isNull(ProjectOrderDO::getTs); + }}); + + for (ProjectOrderDO po : projectOrderDOS) { + chanjetManager.createProductionOrder(po.getId()); + } + } + @PermitAll + @TenantIgnore + @GetMapping("/sendProcedureReport2TPlus") + @Operation(summary = "定时更新(工序汇报单)") + @PreAuthorize("@ss.hasPermission('biz:storage:create')") + @Scheduled(cron = "0 30 0 * * ?") + public void sendProcedureReport2TPlus() throws ChanjetApiException{ + List taskReportDOS = taskReportMapper.selectUnSynchReportData(); + for (TaskReportDO po : taskReportDOS) { + chanjetManager.createTaskReport(po.getId()); + } + } + @PermitAll + @TenantIgnore + @GetMapping("/sendStorageOut2TPlus") + @Operation(summary = "定时更新(材料出库单)") + @PreAuthorize("@ss.hasPermission('biz:storage:create')") + @Scheduled(cron = "0 0 1 * * ?") + public void sendStorageOut2TPlus() throws ChanjetApiException{ + //创建出库单 + chanjetSchedule.createStorageOut(); + } - chanjetManager.createProductionOrder(232L); + @PermitAll + @TenantIgnore + @GetMapping("/sendStorageIn2TPlus") + @Operation(summary = "定时更新(产成品入库单)") + @PreAuthorize("@ss.hasPermission('biz:storage:create')") + @Scheduled(cron = "0 30 1 * * ?") + public void sendStorageIn2TPlus() throws ChanjetApiException{ + //创建入库单 + chanjetSchedule.createStorageInOrder(); } } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java index cbd22fe9..d1c6ee58 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/ChanjetInterfaceEnum.java @@ -31,10 +31,12 @@ public enum ChanjetInterfaceEnum { CREATE_STOCK_OUT_ORDER("/tplus/api/v2/materialDispatch/Create", "创建出库单", CreateStockOutOrderReqVO.class, ResultResVO.class), CREATE_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Create", "创建生产加工单", CreateProductionOrderReqVO.class, ResultResVO.class), - UPDATE_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Update", "创建生产加工单", CreateProductionOrderReqVO.class, ResultResVO.class), + UPDATE_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Update", "修改生产加工单", CreateProductionOrderReqVO.class, ResultResVO.class), + DELETE_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Delete", "删除生产加工单", CreateProductionOrderReqVO.class, ResultResVO.class), AUDIT_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/Audit", "审核生产加工单", AuditProductionOrderReqVO.class, ResultResVO.class), UN_AUDIT_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/UnAudit", "弃审生产加工单", AuditProductionOrderReqVO.class, ResultResVO.class), - QUERY_PRODUCTION_ORDER_LIST("/tplus/api/v2/ManufactureOrderOpenApi/FindVoucherList", "查询生产加工单", ListProductionOrderReqVO.class, ListResultResVO.class), + QUERY_PRODUCTION_ORDER_LIST("/tplus/api/v2/ManufactureOrderOpenApi/FindVoucherList", "查询生产加工单列表", ListProductionOrderReqVO.class, ListResultResVO.class), + QUERY_PRODUCTION_ORDER("/tplus/api/v2/ManufactureOrderOpenApi/GetVoucherDTO", "查询生产加工单", QuerySaleOrderReqVO.class, ResultResVO.class), CREATE_REPORT("/tplus/api/v2/ManufactureReportOpenApi/Create", "创建工序汇报单", CreateReportReqVO.class, ResultResVO.class), UPDATE_REPORT("/tplus/api/v2/ManufactureReportOpenApi/Update", "修改工序汇报单", CreateReportReqVO.class, ResultResVO.class), diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/Process.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/Process.java index bd43842e..8896eb09 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/Process.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/chanjet/dto/Process.java @@ -35,4 +35,8 @@ public class Process { return Name; } + public Process(String code){ + this.Code = code; + } + } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/storage/StorageDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/storage/StorageDO.java index 8068eda4..66c5eca2 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/storage/StorageDO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/storage/StorageDO.java @@ -116,5 +116,7 @@ public class StorageDO extends BaseDO { private Long workshopId; @TableField(exist = false) private String workshopName; + @TableField(exist = false) + private String workshopCode; } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/taskreport/TaskReportDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/taskreport/TaskReportDO.java index 082b59b9..4c4f27de 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/taskreport/TaskReportDO.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/taskreport/TaskReportDO.java @@ -118,6 +118,9 @@ public class TaskReportDO extends BaseDO { @TableField(exist = false) private String procedureName; + @TableField(exist = false) + private String procedureCode; + @TableField(exist = false) private String updaterName; @@ -130,7 +133,8 @@ public class TaskReportDO extends BaseDO { @TableField(exist = false) private String ownerUsername; - private Integer hasSynch; + private Boolean hasSynch; + private Boolean hasSynchStorage; @TableField(exist = false) private Integer isFinal; diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/storage/StorageMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/storage/StorageMapper.java index 27037f18..fa8e498b 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/storage/StorageMapper.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/storage/StorageMapper.java @@ -57,9 +57,11 @@ public interface StorageMapper extends BaseMapperX { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(StorageDO.class) .select("d.name as projectSubName,d.code as projectSubCode") + .select("e.name as workshopName,e.code as workshopCode") .leftJoin(TaskDispatchDO.class, "b", TaskDispatchDO::getCode, StorageDO::getHeaderNo) .leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, TaskDispatchDO::getProjectSubId) .leftJoin(MaterialDO.class, "d", MaterialDO::getId, ProjectOrderSubDO::getMaterialId) + .leftJoin(WorkshopDO.class,"e",WorkshopDO::getId,StorageDO::getWorkshopId) .disableSubLogicDel() .eq(StorageDO::getId, id) .last("LIMIT 1"); diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java index 666fb33c..ce3c704c 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java @@ -108,6 +108,7 @@ public interface TaskReportMapper extends BaseMapperX { "e.name as projectSubName", "e.code as projectSubCode", "e.spec", "e.unit") .select("z.code as dispatchCode") .select("y.name as procedureName") + .select("y.code as procedureCode") .select("u1.nickname as ownerName", "u2.nickname as updaterName") .select("u1.username as ownerUsername") .select("a.plan_no as planCode") @@ -147,7 +148,7 @@ public interface TaskReportMapper extends BaseMapperX { .orderByDesc(TaskReportDO::getId) .disableSubLogicDel(); - query.apply(true,"c.warehouse_id is not null","").apply(true,"(t.has_synch is null or t.has_synch={0})","0"); + query.apply(true,"c.warehouse_id is not null","").apply(true,"(t.has_synch_storage is null or t.has_synch_storage={0})","0"); return selectPage(reqVO, query); } @@ -263,5 +264,22 @@ public interface TaskReportMapper extends BaseMapperX { return selectPage(pageReqVO,query); } + default List selectUnSynchReportData() { + MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); + query.distinct() + .select("t.id") + .leftJoin("pro_task_dispatch_detail as a on t.dispatch_detail_id=a.id") + .leftJoin("pro_task_dispatch as b on b.id=a.dispatch_id") + .leftJoin("project_sale_order_sub as c on c.project_order_id=b.project_id and c.id=b.project_sub_id") + .disableSubLogicDel(); + + query.isNull(TaskReportDO::getHasSynch) + .apply("c.production_id is not null and c.production_detail_id is not null") + ; + + + return selectList(query); + } + } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java index 5ede1750..0c1077b6 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetManager.java @@ -14,6 +14,7 @@ import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.ChanjetSpi; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.dto.Process; import com.chanko.yunxi.mes.module.biz.controller.admin.chanjet.vo.*; import com.chanko.yunxi.mes.module.biz.controller.admin.procedure.vo.ProcedureSaveReqVO; import com.chanko.yunxi.mes.module.biz.controller.admin.projectorder.ProjectOrderController; @@ -1312,15 +1313,22 @@ public class ChanjetManager { ManufactureReportDetails reportDetail = new ManufactureReportDetails(); ArrayList reportTeamDetails = new ArrayList<>(); manufactureReportDetails.add(reportDetail); - reportDetail.setQuantity(aDO.getAmount()) + + + reportDetail.setSourceVoucherId(taskDispatchDetailDO.getProductionId()) + .setSourceVoucherDetailId(taskDispatchDetailDO.getProductionDetailId()) + .setInventory(new Inventory(taskDispatchDetailDO.getProjectSubCode())) + .setRouting(new Routing("99")) + .setProcess(new Process(aDO.getProcedureCode())) + .setUnit(new Unit(taskDispatchDetailDO.getUnit())) .setWorkShop(new WorkShopDTO(taskDispatchDetailDO.getWorkshopCode())) + .setQuantity(aDO.getAmount()) .setManufactureReportTeamDetails(reportTeamDetails) - .setSourceVoucherId(taskDispatchDetailDO.getProductionId()) - .setSourceVoucherDetailId(taskDispatchDetailDO.getProductionDetailId()) ; ManufactureReportTeamDetails reportTeamDetail = new ManufactureReportTeamDetails(); reportTeamDetails.add(reportTeamDetail); reportTeamDetail.setPerson(new Person(aDO.getOwnerUsername())); + reportTeamDetail.setQuantity(aDO.getAmount()); // 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口 if(getSystemParameters()) { @@ -1328,6 +1336,9 @@ public class ChanjetManager { if (!result.isSuccess()) { throw exception(CALL_API_ERROR); } + + aDO.setHasSynch(true); + taskReportMapper.updateById(aDO); } } @@ -1462,52 +1473,89 @@ public class ChanjetManager { .setManufactureOrderDetails(detailList); -// ManufactureOrderDetails detail = new ManufactureOrderDetails(); -// DictDataDO dictDataDO = dictDataMapper.selectByDictTypeAndValue(DictTypeConstants.MATERIAL_UNIT.getCode(), subDOList.get(0).getUnit()); + // 设置生产加工单工序信息 + List manufactureOrderProcessDetailsList = new ArrayList<>(); + ManufactureOrderProcessDetails manufactureOrderProcessDetails = new ManufactureOrderProcessDetails(); + manufactureOrderProcessDetails.setInventory(new Inventory(subDOList.get(0).getProjectSubCode())); + ProcessingType processingType = new ProcessingType(); + processingType.setCode("HomeMade"); + manufactureOrderProcessDetails.setProcessingType(processingType); + manufactureOrderProcessDetails.setUnit(new Unit(subDOList.get(0).getUnit())); + // 生产订单必须要选择工序,否则无法与工序汇报单无法匹配 + manufactureOrderProcessDetails.setProcess(new Process("01")); + + manufactureOrderProcessDetailsList.add(manufactureOrderProcessDetails); + + ManufactureOrderDetails detail = new ManufactureOrderDetails(); + DictDataDO dictDataDO = dictDataMapper.selectByDictTypeAndValue(DictTypeConstants.MATERIAL_UNIT.getCode(), subDOList.get(0).getUnit()); + + detail.setInventory(new Inventory(subDOList.get(0).getProjectSubCode())) + .setUnit(new Unit(dictDataDO.getLabel())) + .setQuantity(subDOList.get(0).getAmount()) + .setPreStartDate(aDo.getProjectStartTime().format(DateTimeFormatter.ISO_DATE)) + .setPreFinishDate(aDo.getProjectEndTime().format(DateTimeFormatter.ISO_DATE)) + .setManufactureOrderProcessDetails(manufactureOrderProcessDetailsList) + ; + detailList.add(detail); + +// subDOList.forEach(subDO -> { +// ManufactureOrderDetails detail = new ManufactureOrderDetails(); +// DictDataDO dictDataDO = dictDataMapper.selectByDictTypeAndValue(DictTypeConstants.MATERIAL_UNIT.getCode(), subDO.getUnit()); // -// detail.setInventory(new Inventory(subDOList.get(0).getProjectSubCode())) -// .setUnit(new Unit(dictDataDO.getLabel())) -// .setQuantity(subDOList.get(0).getAmount()) -// .setPreStartDate(aDo.getProjectStartTime().format(DateTimeFormatter.ISO_DATE)) -// .setPreFinishDate(aDo.getProjectEndTime().format(DateTimeFormatter.ISO_DATE)) -// ; -// detailList.add(detail); - - subDOList.forEach(subDO -> { - ManufactureOrderDetails detail = new ManufactureOrderDetails(); - DictDataDO dictDataDO = dictDataMapper.selectByDictTypeAndValue(DictTypeConstants.MATERIAL_UNIT.getCode(), subDO.getUnit()); - - detail.setInventory(new Inventory(subDO.getProjectSubCode())) - .setUnit(new Unit(dictDataDO.getLabel())) - .setQuantity(subDO.getAmount()) - .setPreStartDate(aDo.getProjectStartTime().format(DateTimeFormatter.ISO_DATE)) - .setPreFinishDate(aDo.getProjectEndTime().format(DateTimeFormatter.ISO_DATE)) - ; - detailList.add(detail); - }); +// detail.setInventory(new Inventory(subDO.getProjectSubCode())) +// .setUnit(new Unit(dictDataDO.getLabel())) +// .setQuantity(subDO.getAmount()) +// .setPreStartDate(aDo.getProjectStartTime().format(DateTimeFormatter.ISO_DATE)) +// .setPreFinishDate(aDo.getProjectEndTime().format(DateTimeFormatter.ISO_DATE)) +// ; +// detailList.add(detail); +// }); // 设置为“是”,打开所有与用友通信的接口 if(getSystemParameters()) { + + + //判断是否已经提交过生产加工单 + CommonResult resultExist = + chanjetSpi.invoke(QUERY_PRODUCTION_ORDER_LIST, new ListProductionOrderReqVO(aDo.getCode()), ListResultResVO.class); + if (!resultExist.isSuccess()) { + throw new RuntimeException("queryProductionOrder exception: " + JSON.toJSONString(resultExist)); + } + CommonResult result = null; - if(aDo.getTs()==null || aDo.getTs().isEmpty()){ + if(resultExist.getData().getData()!=null && resultExist.getData().getData().getTotalCount()==0){ + //没提交过,直接创建生产加工单 result = chanjetSpi.invoke(CREATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); }else{ - //生产加工单修改前要先弃审 - CommonResult result3 = chanjetSpi.invoke(UN_AUDIT_PRODUCTION_ORDER, new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(aDo.getCode())), ResultResVO.class); + //生产加工单修改接口问题,重新提交时要先弃审,删除,再重新创建, + CommonResult result3 = + chanjetSpi.invoke(UN_AUDIT_PRODUCTION_ORDER, new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(aDo.getCode())), ResultResVO.class); if (!result3.isSuccess() || !result3.getData().isSuccess()) { throw new RuntimeException(result3.getMsg()); } - dto.setTs(aDo.getTs()); - result = chanjetSpi.invoke(UPDATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); + //更新时必须带创建后用友返回的时间戳,TODO:更新接口不明确,暂时不用,取而代之使用删除接口 +// dto.setTs(aDo.getTs()); +// result = chanjetSpi.invoke(UPDATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); + CommonResult result4 = + chanjetSpi.invoke(DELETE_PRODUCTION_ORDER, + new AuditProductionOrderReqVO(new AuditProductionOrderReqVO.AuditProductionOrderParamVO(externalCode)), + ResultResVO.class); + if (!result4.isSuccess() || !result4.getData().isSuccess()) { + throw new RuntimeException(result4.getMsg()); + } + + //删除成功后,重新提交生产加工单 + result = chanjetSpi.invoke(CREATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); } // CommonResult result = chanjetSpi.invoke(UPDATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class); if (!result.isSuccess() || !result.getData().isSuccess()) { throw exception(CALL_API_ERROR); } - // 暂不考虑失败场景 TODO 重试接口 - CommonResult result2 = chanjetSpi.invoke(AUDIT_PRODUCTION_ORDER, new AuditProductionOrderReqVO(new AuditProductionOrderReqVO.AuditProductionOrderParamVO(externalCode)), ResultResVO.class); + // 创建成功后,需要重新审核 暂不考虑失败场景 TODO 重试接口 + CommonResult result2 = + chanjetSpi.invoke(AUDIT_PRODUCTION_ORDER, new AuditProductionOrderReqVO(new AuditProductionOrderReqVO.AuditProductionOrderParamVO(externalCode)), ResultResVO.class); if (!result2.isSuccess() || !result2.getData().isSuccess()) { throw new RuntimeException(result2.getMsg()); } @@ -1519,7 +1567,8 @@ public class ChanjetManager { projectOrderMapper.updateById(aDo); // 查询报工单数据 将id回写至子项目表 Map> subGroupByProjectSubCode = subDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getProjectSubCode)); - CommonResult listResult = chanjetSpi.invoke(QUERY_PRODUCTION_ORDER_LIST, new ListProductionOrderReqVO(rMap.get("Code")), ListResultResVO.class); + CommonResult listResult = + chanjetSpi.invoke(QUERY_PRODUCTION_ORDER_LIST, new ListProductionOrderReqVO(rMap.get("Code")), ListResultResVO.class); if (!listResult.isSuccess() || listResult.getData() == null || listResult.getData().getData() == null || listResult.getData().getData().getTotalCount() == 0) { throw new RuntimeException("queryProductionOrder exception: " + JSON.toJSONString(listResult)); } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetSchedule.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetSchedule.java index 98813098..512702b8 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetSchedule.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/manager/ChanjetSchedule.java @@ -624,7 +624,7 @@ public class ChanjetSchedule { }); reprotResult.getList().forEach(item->{ - item.setHasSynch(1); + item.setHasSynchStorage(true); taskReportMapper.updateById(item); }); storageMapper.updateTenantId(); @@ -662,7 +662,7 @@ public class ChanjetSchedule { .setVoucherDate(sdf.format(new Date())) .setRDRecordDetails(detailList) .setWarehouse(new Warehouse(warehouseDO.getWhNo())) - .setDepartment(new DepartmentDTO().setCode(null).setName(null)) + .setDepartment(new DepartmentDTO().setName(storage.getWorkshopName()).setCode(storage.getWorkshopCode())) ; vo.forEach(mat -> { diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index 11dffee0..a9f01f6e 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -672,4 +672,5 @@ alter table wms_storage_check_mat Modify COLUMN pn_id bigint(20) default null CO //================================20240816==================================================================== alter table project_sale_order ADD COLUMN ts varchar(32) default null COMMENT '用友时间戳'; +ALTER TABLE pro_task_report ADD COLUMN `has_synch_storage` TINYINT(1) DEFAULT null COMMENT '入库同步标识';