|
|
|
@ -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<ManufactureReportTeamDetails> 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<ManufactureOrderProcessDetails> 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<ListResultResVO> 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<ResultResVO> 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<ResultResVO> result3 = chanjetSpi.invoke(UN_AUDIT_PRODUCTION_ORDER, new QuerySaleOrderReqVO(new QuerySaleOrderReqVO.SaleOrderParamVO(aDo.getCode())), ResultResVO.class);
|
|
|
|
|
//生产加工单修改接口问题,重新提交时要先弃审,删除,再重新创建,
|
|
|
|
|
CommonResult<ResultResVO> 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<ResultResVO> 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<ResultResVO> result = chanjetSpi.invoke(UPDATE_PRODUCTION_ORDER, new CreateProductionOrderReqVO(dto), ResultResVO.class);
|
|
|
|
|
if (!result.isSuccess() || !result.getData().isSuccess()) {
|
|
|
|
|
throw exception(CALL_API_ERROR);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 暂不考虑失败场景 TODO 重试接口
|
|
|
|
|
CommonResult<ResultResVO> result2 = chanjetSpi.invoke(AUDIT_PRODUCTION_ORDER, new AuditProductionOrderReqVO(new AuditProductionOrderReqVO.AuditProductionOrderParamVO(externalCode)), ResultResVO.class);
|
|
|
|
|
// 创建成功后,需要重新审核 暂不考虑失败场景 TODO 重试接口
|
|
|
|
|
CommonResult<ResultResVO> 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<String, List<ProjectOrderSubDO>> subGroupByProjectSubCode = subDOList.stream().collect(Collectors.groupingBy(ProjectOrderSubDO::getProjectSubCode));
|
|
|
|
|
CommonResult<ListResultResVO> listResult = chanjetSpi.invoke(QUERY_PRODUCTION_ORDER_LIST, new ListProductionOrderReqVO(rMap.get("Code")), ListResultResVO.class);
|
|
|
|
|
CommonResult<ListResultResVO> 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));
|
|
|
|
|
}
|
|
|
|
|