批量报工 状态更新

dev
siontion 4 months ago
parent b1776c2733
commit 25c7c3cb1d

@ -7,7 +7,9 @@ import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import com.chanko.yunxi.mes.module.biz.controller.admin.taskreport.vo.*;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskreport.TaskReportDO;
import com.chanko.yunxi.mes.module.biz.dal.mysql.taskdispatch.TaskDispatchDetailMapper;
import com.chanko.yunxi.mes.module.biz.service.taskreport.TaskReportService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -33,6 +35,8 @@ public class TaskReportController {
@Resource
private TaskReportService taskReportService;
@Resource
private TaskDispatchDetailMapper taskDispatchDetailMapper;
@PostMapping("/create")
@Operation(summary = "创建任务报工")
@ -45,10 +49,18 @@ public class TaskReportController {
@Operation(summary = "批量创建任务报工")
@PreAuthorize("@ss.hasPermission('biz:task-report:create')")
public CommonResult<Boolean> createTaskReport(@Valid @RequestBody List<TaskReportSaveReqVO> createReqVOs) {
final Long[] dispatchDetailId = new Long[1];
final Integer[] procedureStatus = new Integer[1];
createReqVOs.forEach(item ->{
taskReportService.createTaskReport(item);
dispatchDetailId[0] = item.getDispatchDetailId();
procedureStatus[0] = item.getProcedureStatus();
});
// taskReportService.createTaskReport(createReqVO)
TaskDispatchDetailDO taskDispatchDetailDO = taskDispatchDetailMapper.selectById(dispatchDetailId[0] );
taskDispatchDetailDO.setProcedureStatus(procedureStatus[0]);
taskDispatchDetailMapper.updateById(taskDispatchDetailDO);
return success(true);
}

@ -58,6 +58,9 @@ public class TaskReportSaveReqVO {
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "工序状态 默认|已提交|已完成 0|1|2")
private Integer procedureStatus;
@Schema(description = "报工工时", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "报工工时不能为空")
private BigDecimal workTime;

@ -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);
}
}
}
// 自定义多字段去重比较器

Loading…
Cancel
Save