|
|
|
@ -17,6 +17,7 @@ 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;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.projectorder.vo.ProjectOrderSaveReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.storage.vo.StorageSaveReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.controller.admin.taskreport.vo.TaskReportPageReqVO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.customer.CustomerDO;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.dataobject.material.MaterialDO;
|
|
|
|
@ -36,6 +37,7 @@ import com.chanko.yunxi.mes.module.biz.dal.mysql.material.MaterialMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.projectorder.ProjectOrderSubMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.storage.StorageMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.storagemat.StorageMatMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.supplier.SupplierMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.systemparameters.SystemParametersMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
|
|
|
|
@ -45,6 +47,7 @@ import com.chanko.yunxi.mes.module.biz.dal.mysql.workshop.WorkshopMapper;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.enums.*;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.procedure.ProcedureService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.projectorder.ProjectOrderService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.storage.StorageService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.storagemat.StorageMatService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.biz.service.taskreport.TaskReportService;
|
|
|
|
|
import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserSaveReqVO;
|
|
|
|
@ -121,6 +124,11 @@ public class ChanjetSchedule {
|
|
|
|
|
private ProjectOrderSubMapper projectOrderSubMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private WarehouseMapper warehouseMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
private StorageService storageService;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private StorageMatMapper storageMatMapper;
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private SystemParametersMapper systemParametersMapper;
|
|
|
|
@ -1160,37 +1168,74 @@ public class ChanjetSchedule {
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void createStorageInOrder() throws ChanjetApiException {
|
|
|
|
|
StorageDO storage = new StorageDO();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TaskReportPageReqVO reqVO =new TaskReportPageReqVO();
|
|
|
|
|
reqVO.setPageSize(999);
|
|
|
|
|
PageResult<TaskReportDO> reprotResult = taskReportMapper.selectNoSynchPage(reqVO);
|
|
|
|
|
|
|
|
|
|
List<StorageMatDO> sublist = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
if(reprotResult.getTotal()>0){
|
|
|
|
|
Map<String, List<TaskReportDO>> dataGroupByMatCode = reprotResult.getList().stream().collect(Collectors.groupingBy(TaskReportDO::getWhNo));
|
|
|
|
|
dataGroupByMatCode.forEach((whno,mList) ->{
|
|
|
|
|
Map<Long, List<TaskReportDO>> dataGroupByMatId = reprotResult.getList().stream().collect(Collectors.groupingBy(TaskReportDO::getWhId));
|
|
|
|
|
dataGroupByMatId.forEach((whId,mList) ->{
|
|
|
|
|
|
|
|
|
|
StorageSaveReqVO createReqVO = new StorageSaveReqVO();
|
|
|
|
|
createReqVO.setStockType(1).setStockInType(3).setStatus(2).setWhId(whId);
|
|
|
|
|
Long stockId = storageService.createStorage(createReqVO);
|
|
|
|
|
StorageDO storage = storageMapper.selectById(stockId);
|
|
|
|
|
|
|
|
|
|
List<StorageMatDO> sublist = new ArrayList<>();
|
|
|
|
|
mList.forEach(item->{
|
|
|
|
|
if(item.getIsFinal().equals(1)){
|
|
|
|
|
StorageMatDO storageMatDO = new StorageMatDO();
|
|
|
|
|
storageMatDO.setMatId(item.getMaterialId());
|
|
|
|
|
storageMatDO.setProcedureId(item.getProcedureId());
|
|
|
|
|
storageMatDO.setStorageOkQty(new BigDecimal(mList.stream().filter(vo -> vo.getMaterialId().equals(item.getMaterialId())).mapToInt(TaskReportDO::getAmount).sum()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sublist.add(storageMatDO);
|
|
|
|
|
if(sublist.stream().filter(q->q.getMatId().equals(item.getMaterialId())).count()==0){
|
|
|
|
|
StorageMatDO storageMatDO = new StorageMatDO();
|
|
|
|
|
storageMatDO.setStockId(stockId);
|
|
|
|
|
storageMatDO.setMatId(item.getMaterialId());
|
|
|
|
|
storageMatDO.setProcedureId(item.getProcedureId());
|
|
|
|
|
storageMatDO.setWhId(whId);
|
|
|
|
|
storageMatDO.setStorageOkQty(new BigDecimal(mList.stream().filter(vo -> vo.getMaterialId().equals(item.getMaterialId())).mapToInt(TaskReportDO::getAmount).sum()));
|
|
|
|
|
storageMatMapper.insert(storageMatDO);
|
|
|
|
|
sublist.add(storageMatDO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(item.getType().equals("ASSEMBLE")){
|
|
|
|
|
StorageMatDO storageMatDO = new StorageMatDO();
|
|
|
|
|
storageMatDO.setMatId(item.getMaterialId());
|
|
|
|
|
storageMatDO.setProcedureId(item.getProcedureId());
|
|
|
|
|
storageMatDO.setStorageOkQty(new BigDecimal(mList.stream().filter(vo -> vo.getMaterialId().equals(item.getMaterialId())).filter(distinctByKeys(p-> Arrays.asList(p.getMaterialId(),p.getAssembleCode()))).count()));
|
|
|
|
|
|
|
|
|
|
sublist.add(storageMatDO);
|
|
|
|
|
if(sublist.stream().filter(q->q.getMatId().equals(item.getMaterialId())).count()==0) {
|
|
|
|
|
StorageMatDO storageMatDO = new StorageMatDO();
|
|
|
|
|
storageMatDO.setStockId(stockId);
|
|
|
|
|
storageMatDO.setMatId(item.getMaterialId());
|
|
|
|
|
storageMatDO.setProcedureId(item.getProcedureId());
|
|
|
|
|
storageMatDO.setWhId(whId);
|
|
|
|
|
storageMatDO.setStorageOkQty(new BigDecimal(mList.stream().filter(vo -> vo.getMaterialId().equals(item.getMaterialId())).filter(distinctByKeys(p -> Arrays.asList(p.getMaterialId(), p.getAssembleCode()))).count()));
|
|
|
|
|
storageMatMapper.insert(storageMatDO);
|
|
|
|
|
sublist.add(storageMatDO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WarehouseDO aDo = warehouseMapper.selectById(whId);
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
CreateStockInDTO dto = new CreateStockInDTO();
|
|
|
|
|
ArrayList<RDRecordDetail> detailList = new ArrayList<>();
|
|
|
|
|
dto.setExternalCode(storage.getStockNo())
|
|
|
|
|
.setVoucherDate(sdf.format(new Date()))
|
|
|
|
|
.setRDRecordDetails(detailList)
|
|
|
|
|
.setWarehouse(new Warehouse(aDo.getWhNo()))
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
// 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口
|
|
|
|
|
if(getSystemParameters()){
|
|
|
|
|
CommonResult<ResultResVO> result = null;
|
|
|
|
|
try {
|
|
|
|
|
result = chanjetSpi.invoke(CREATE_STOCK_IN_ORDER, new CreateStorageReqVO(dto), ResultResVO.class);
|
|
|
|
|
} catch (ChanjetApiException e) {
|
|
|
|
|
throw exception(CALL_API_ERROR);
|
|
|
|
|
}
|
|
|
|
|
if(!result.isSuccess()){
|
|
|
|
|
throw exception(CALL_API_ERROR);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
reprotResult.getList().forEach(item->{
|
|
|
|
@ -1200,24 +1245,7 @@ public class ChanjetSchedule {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WarehouseDO aDo = warehouseMapper.selectById(storage.getWhId());
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
CreateStockInDTO dto = new CreateStockInDTO();
|
|
|
|
|
ArrayList<RDRecordDetail> detailList = new ArrayList<>();
|
|
|
|
|
dto.setExternalCode(storage.getStockNo())
|
|
|
|
|
.setVoucherDate(sdf.format(new Date()))
|
|
|
|
|
.setRDRecordDetails(detailList)
|
|
|
|
|
.setWarehouse(new Warehouse(aDo.getWhNo()))
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
// 设置为“否”,关闭所有与用友通信的接口;为“是”,打开所有与用友通信的接口
|
|
|
|
|
if(getSystemParameters()){
|
|
|
|
|
CommonResult<ResultResVO> result = chanjetSpi.invoke(CREATE_STOCK_IN_ORDER, new CreateStorageReqVO(dto), ResultResVO.class);
|
|
|
|
|
if(!result.isSuccess()){
|
|
|
|
|
throw exception(CALL_API_ERROR);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
// 自定义多字段去重比较器
|
|
|
|
|