|
@@ -8,14 +8,14 @@ import com.rongwei.bscommon.sys.dao.*;
|
|
|
import com.rongwei.bscommon.sys.service.*;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
|
|
|
|
-import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
|
|
|
-import com.rongwei.bsentity.vo.InsertMyReportOutputReq;
|
|
|
-import com.rongwei.bsentity.vo.OrganizationCodeAndDeviceCodeVo;
|
|
|
-import com.rongwei.bsentity.vo.StartRePortReq;
|
|
|
+import com.rongwei.bsentity.vo.*;
|
|
|
import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
+import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
|
|
|
+import com.rongwei.safecommon.fegin.CXAdminFeginClient;
|
|
|
import com.rongwei.safecommon.utils.CXCommonUtils;
|
|
|
+import com.rongwei.safecommon.utils.SaveConstans;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -60,6 +60,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
private ApsAlloyCompositionService apsAlloyCompositionService;
|
|
|
@Autowired
|
|
|
private ApsReportBlankCompentService apsReportBlankCompentService;
|
|
|
+ @Resource
|
|
|
+ private CXAdminFeginClient cxAdminFeginClient;
|
|
|
|
|
|
@Override
|
|
|
@Transactional
|
|
@@ -207,6 +209,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
apsReportRecordsDo.setReportworktime(DateUtil.date());
|
|
|
//报工状态
|
|
|
apsReportRecordsDo.setReportworkstatus("已开工");
|
|
|
+ apsReportRecordsDo.setCheckstatus("待检验");
|
|
|
|
|
|
//保存主表
|
|
|
this.save(apsReportRecordsDo);
|
|
@@ -287,7 +290,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
apsReportCheckoutDo.setId(SecurityUtil.getUUID());
|
|
|
apsReportCheckoutDo.setTenantid(tenantId);
|
|
|
apsReportCheckoutDo.setMainid(apsReportRecordsDo.getId());
|
|
|
- apsReportCheckoutDo.setCheckitem(apsCheckParameterDo.getCkeckparameter());
|
|
|
+ apsReportCheckoutDo.setCheckitem(apsCheckParameterDo.getCheckparameter());
|
|
|
needInsertApsReportCheckList.add(apsReportCheckoutDo);
|
|
|
}
|
|
|
if (ObjectUtil.isNotEmpty(needInsertApsReportCheckList)) {
|
|
@@ -311,7 +314,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
} else {//查询国标
|
|
|
List<ApsAlloyDo> collect1 = apsAlloyDoList.stream().filter(item -> ObjectUtil.isEmpty(item.getCustomerid())).collect(Collectors.toList());
|
|
|
if (ObjectUtil.isNotEmpty(collect1)) {
|
|
|
- alloyId = collect.get(0).getId();
|
|
|
+ alloyId = collect1.get(0).getId();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -348,6 +351,215 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
|
|
|
return R.ok(apsReportRecordsDo);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public R saveReport(SaveReportReq req) {
|
|
|
+ //报工主表
|
|
|
+ ApsReportRecordsDo apsReportRecordsDo = req.getApsReportRecordsDo();
|
|
|
+ //报工输出物料
|
|
|
+ List<ApsReportOutputDo> apsReportOutputDoList = req.getApsReportOutputDoList();
|
|
|
+ //报工加工参数
|
|
|
+ List<ApsReportMachiningDo> apsReportMachiningDoList = req.getApsReportMachiningDoList();
|
|
|
+
|
|
|
+ //没有新增,只会更新
|
|
|
+ apsReportRecordsDo.setCheckstatus("待检验");
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(apsReportOutputDoList)) {
|
|
|
+ apsReportOutputService.updateBatchById(apsReportOutputDoList);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(apsReportMachiningDoList)) {
|
|
|
+ apsReportMachiningService.updateBatchById(apsReportMachiningDoList);
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询当前的报工记录信息
|
|
|
+ ApsReportRecordsDo nowReportRecordsDo = this.getById(apsReportRecordsDo.getId());
|
|
|
+
|
|
|
+ //查询对应的工序作业信息
|
|
|
+ ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(nowReportRecordsDo.getProcessoperationid());
|
|
|
+ //查询对应的工序作业明细信息
|
|
|
+ ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(nowReportRecordsDo.getProcessequid());
|
|
|
+ //查询对应的坯料计划信息
|
|
|
+ ApsBlankOrderDo apsBlankOrderDo = apsBlankOrderService.getById(apsProcessOperationDo.getBlankid());
|
|
|
+ //查询对应的订单评审信息
|
|
|
+ ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(apsBlankOrderDo.getProductionorderid());
|
|
|
+
|
|
|
+ //=============更新作业明细信息=============
|
|
|
+ //更新待报工记录ID、已报工卷数
|
|
|
+ //已报工卷数
|
|
|
+ Integer reportroll = apsProcessOperationProcessEquDo.getReportroll();
|
|
|
+ ApsProcessOperationProcessEquDo needUpdateProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
|
|
|
+ needUpdateProcessOperationProcessEquDo.setId(apsProcessOperationProcessEquDo.getId());
|
|
|
+ //已报工卷数+1
|
|
|
+ needUpdateProcessOperationProcessEquDo.setReportroll(reportroll + 1);
|
|
|
+ /**
|
|
|
+ * 更新作业明细的完工状态
|
|
|
+ * 如果未完工卷数=0,或者工序作业已完工状态=已完工,则=已完工
|
|
|
+ * 如果未完工卷数>0,并且工序作业已完工状态=未完工,则=未完工
|
|
|
+ */
|
|
|
+ //计划加工卷数
|
|
|
+ Integer planprocessrall = apsProcessOperationProcessEquDo.getPlanprocessrall();
|
|
|
+ //未完工卷数=计划加工卷数-已报工卷数
|
|
|
+ int unfinishroll = planprocessrall - needUpdateProcessOperationProcessEquDo.getReportroll();
|
|
|
+ if(unfinishroll <= 0 || apsProcessOperationDo.getClosestatus().equals("已完工")){
|
|
|
+ needUpdateProcessOperationProcessEquDo.setClosestatus("已完工");
|
|
|
+ }
|
|
|
+ if(unfinishroll > 0 && apsProcessOperationDo.getClosestatus().equals("未完工")){
|
|
|
+ needUpdateProcessOperationProcessEquDo.setClosestatus("未完工");
|
|
|
+ }
|
|
|
+
|
|
|
+ //带报工记录ID清空
|
|
|
+ needUpdateProcessOperationProcessEquDo.setWaitreportid("");
|
|
|
+ if (apsProcessOperationProcessEquDo.getClosestatus().equals("未完工") && apsProcessOperationProcessEquDo.getStartingroll() > 0) {
|
|
|
+ needUpdateProcessOperationProcessEquDo.setWorkstatus("加工中");
|
|
|
+ }
|
|
|
+ apsProcessOperationProcessEquService.updateById(needUpdateProcessOperationProcessEquDo);
|
|
|
+
|
|
|
+ //==============更新工序作业信息==============
|
|
|
+ this.baseMapper.updateProcessReportRoll(apsProcessOperationDo.getId());
|
|
|
+
|
|
|
+ //=============更新设备的报工记录ID===========
|
|
|
+ this.baseMapper.updateDeviceWorkId(apsProcessOperationProcessEquDo.getProcessdeviceid());
|
|
|
+
|
|
|
+ //============保存(报工)时,生成炉号和批次号=============
|
|
|
+ //获取设备/炉 的炉号(每月、每个设备/炉 更新)
|
|
|
+ String heatNumber;//初始化炉号
|
|
|
+ //调用通用接口生成炉号
|
|
|
+ SysSerialVo vo = new SysSerialVo();
|
|
|
+ vo.setModulecode("aps_report_output_heat_" + apsProcessOperationProcessEquDo.getProcessdeviceid());
|
|
|
+ vo.setRuleTemplateStr("@{serialNumber:#000}");
|
|
|
+ vo.setResetrule("date:yyyyMM");
|
|
|
+ vo.setIfautomaticreset("y");
|
|
|
+ vo.setInitValue(0L);
|
|
|
+ Map<String, Object> codeData = cxAdminFeginClient.getSerialNumberCode(vo).getData();
|
|
|
+ heatNumber = codeData.get("code").toString();
|
|
|
+
|
|
|
+ apsReportRecordsDo.setHeatnumber(heatNumber);
|
|
|
+ //报工状态
|
|
|
+ apsReportRecordsDo.setReportworkstatus("已报工");
|
|
|
+ this.updateById(apsReportRecordsDo);
|
|
|
+
|
|
|
+ //物理删除原来的报工记录输出物料
|
|
|
+ this.baseMapper.deleteOutputmaterialbyMainId(apsReportRecordsDo.getId());
|
|
|
+
|
|
|
+ OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo = this.baseMapper.selectOrganizationCodeAndDeviceCode(apsProcessOperationProcessEquDo.getProcessdeviceid());
|
|
|
+ if (ObjectUtil.isEmpty(organizationCodeAndDeviceCodeVo)) {
|
|
|
+ return R.error("未找到对应的车间代号和设备代号");
|
|
|
+ }
|
|
|
+ InsertMyReportOutputReq insertMyReportOutputReq = new InsertMyReportOutputReq();
|
|
|
+ insertMyReportOutputReq.setMainId(apsReportRecordsDo.getId());
|
|
|
+ insertMyReportOutputReq.setProcessId(apsProcessOperationDo.getId());
|
|
|
+ insertMyReportOutputReq.setIfBlankProcess(apsProcessOperationDo.getIfblankprocess());
|
|
|
+ insertMyReportOutputReq.setDeviceId(apsProcessOperationProcessEquDo.getProcessdeviceid());
|
|
|
+ insertMyReportOutputReq.setMark(organizationCodeAndDeviceCodeVo.getOrganizationCode());
|
|
|
+ insertMyReportOutputReq.setYearCode((DateUtil.year(DateUtil.date()) % 100) + "");
|
|
|
+ insertMyReportOutputReq.setMonthCode(SaveConstans.MONTH_CODE_LIST.get(DateUtil.month(DateUtil.date())));
|
|
|
+ insertMyReportOutputReq.setEquipmentCode(organizationCodeAndDeviceCodeVo.getDeviceCode());
|
|
|
+ insertMyReportOutputReq.setHeatNumber(heatNumber);
|
|
|
+ insertMyReportOutputReq.setInputBatchNumber(apsReportRecordsDo.getBatchnumber());
|
|
|
+ insertMyReportOutputReq.setBlankType(apsBlankOrderDo.getBlanktype());
|
|
|
+
|
|
|
+ R r = apsReportOutputService.insertMyReportOutput(insertMyReportOutputReq);
|
|
|
+ if (!r.getCode().equals("200")) {
|
|
|
+ return R.error(r.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ //=================新增在制品库存=================
|
|
|
+ //查询报工记录对应的物料子表
|
|
|
+ List<ApsReportOutputDo> apsReportOutputDos = apsReportOutputService.list(new QueryWrapper<ApsReportOutputDo>().lambda().eq(ApsReportOutputDo::getMainid, apsReportRecordsDo.getId()));
|
|
|
+
|
|
|
+ if (ObjectUtil.isNotEmpty(apsReportOutputDos)) {
|
|
|
+ //如果主表的批次号不为空,查找 在制品库存中是否有此 批次号 的数据,有 复制并删除原数据,坯料批次号 等坯料数据不变,其余数据变更
|
|
|
+ if (ObjectUtil.isNotEmpty(apsReportRecordsDo.getBatchnumber())) {
|
|
|
+ ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo = apsWorkInProgressInventoryService.getOne(new QueryWrapper<ApsWorkInProgressInventoryDo>().lambda().eq(ApsWorkInProgressInventoryDo::getDeleted, "0").eq(ApsWorkInProgressInventoryDo::getBatchnumber, apsReportRecordsDo.getBatchnumber()));
|
|
|
+ //不为空,则删除数据(逻辑删除)
|
|
|
+ if(ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo)){
|
|
|
+ apsWorkInProgressInventoryService.removeById(apsWorkInProgressInventoryDo.getId());
|
|
|
+ }
|
|
|
+ //增加或者复制在制品库存
|
|
|
+ addOrCopyWorkInProgress(apsReportOutputDos,
|
|
|
+ apsWorkInProgressInventoryDo,
|
|
|
+ apsProcessOperationProcessEquDo,
|
|
|
+ apsProcessOperationDo,
|
|
|
+ organizationCodeAndDeviceCodeVo,
|
|
|
+ apsProductionOrderDo);
|
|
|
+ } else {
|
|
|
+ addOrCopyWorkInProgress(apsReportOutputDos,
|
|
|
+ null,
|
|
|
+ apsProcessOperationProcessEquDo,
|
|
|
+ apsProcessOperationDo,
|
|
|
+ organizationCodeAndDeviceCodeVo,
|
|
|
+ apsProductionOrderDo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //=========更新生产状态等=============
|
|
|
+ //更新生产状态
|
|
|
+ CommonUpdateProductionStatusReq req3 = new CommonUpdateProductionStatusReq();
|
|
|
+ req3.setProcessOperationEquId(apsProcessOperationProcessEquDo.getId());
|
|
|
+ R r2 = apsProcessOperationProcessEquService.updateProductionStatus(req3);
|
|
|
+ if (!r2.getCode().equals("200")) {
|
|
|
+ return R.error(r2.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addOrCopyWorkInProgress(List<ApsReportOutputDo> apsReportOutputDos,
|
|
|
+ ApsWorkInProgressInventoryDo apsWorkInProgressInventoryDo,
|
|
|
+ ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo,
|
|
|
+ ApsProcessOperationDo apsProcessOperationDo,
|
|
|
+ OrganizationCodeAndDeviceCodeVo organizationCodeAndDeviceCodeVo,
|
|
|
+ ApsProductionOrderDo apsProductionOrderDo) {
|
|
|
+ List<ApsWorkInProgressInventoryDo> needAddWorkInProgressInventoryList = new LinkedList<>();
|
|
|
+ for (ApsReportOutputDo apsReportOutputDo : apsReportOutputDos) {
|
|
|
+ ApsWorkInProgressInventoryDo workInProgressInventoryDo = new ApsWorkInProgressInventoryDo();
|
|
|
+ workInProgressInventoryDo.setId(SecurityUtil.getUUID());
|
|
|
+ //报工输出物料的批次号
|
|
|
+ workInProgressInventoryDo.setBlankbatchnumber(apsReportOutputDo.getOutputnumber());
|
|
|
+ //报工输出物料的主键ID
|
|
|
+ workInProgressInventoryDo.setBlankid(apsReportOutputDo.getId());
|
|
|
+ //报工输出物料的报工物料描述
|
|
|
+ workInProgressInventoryDo.setBlankname(apsReportOutputDo.getOutputmaterial());
|
|
|
+ if (ObjectUtil.isNotEmpty(apsWorkInProgressInventoryDo)) {
|
|
|
+ workInProgressInventoryDo.setBlankbatchnumber(apsWorkInProgressInventoryDo.getBlankbatchnumber());
|
|
|
+ workInProgressInventoryDo.setBlankid(apsWorkInProgressInventoryDo.getBlankid());
|
|
|
+ workInProgressInventoryDo.setBlankname(apsWorkInProgressInventoryDo.getBlankname());
|
|
|
+ }
|
|
|
+ //报工记录对应的作业明细ID
|
|
|
+ workInProgressInventoryDo.setProcessoperationequid(apsProcessOperationProcessEquDo.getId());
|
|
|
+ //报工记录对应的工序作业ID
|
|
|
+ workInProgressInventoryDo.setProcessoperationid(apsProcessOperationDo.getId());
|
|
|
+ //报工记录ID
|
|
|
+ workInProgressInventoryDo.setWorkreportrecordid(apsProcessOperationProcessEquDo.getWaitreportid());
|
|
|
+ //报工记录输出物料对应的工序作业输出物料的主键ID
|
|
|
+ workInProgressInventoryDo.setJoboutputmaterialid(apsReportOutputDo.getOutputid());
|
|
|
+ //报工记录输出物料的主键ID
|
|
|
+ workInProgressInventoryDo.setReportoutputmaterialid(apsReportOutputDo.getId());
|
|
|
+ //输出物料的批次号
|
|
|
+ workInProgressInventoryDo.setBatchnumber(apsReportOutputDo.getOutputnumber());
|
|
|
+ //报工记录输出物料的报工物料描述
|
|
|
+ workInProgressInventoryDo.setWorkinprocess(apsReportOutputDo.getOutputmaterial());
|
|
|
+ //报工记录的报工日期
|
|
|
+ workInProgressInventoryDo.setProductdate(DateUtil.date());
|
|
|
+ //报工记录对应工序作业的加工设备所属工厂名称
|
|
|
+ workInProgressInventoryDo.setProductfactory(organizationCodeAndDeviceCodeVo.getOwnedFactory());
|
|
|
+ //报工记录对应工序作业明细的加工车间
|
|
|
+ workInProgressInventoryDo.setProductworkshop(apsProcessOperationProcessEquDo.getProcessworkshop());
|
|
|
+ //报工记录对应工序作业明细的加工设备
|
|
|
+ workInProgressInventoryDo.setProductdevice(apsProcessOperationProcessEquDo.getProcessdevice());
|
|
|
+ //工序作业的客户名称
|
|
|
+ workInProgressInventoryDo.setCustomername(apsProductionOrderDo.getCustomname());
|
|
|
+ //报工记录对应工序作业的订单号
|
|
|
+ workInProgressInventoryDo.setOrdernumber(apsProductionOrderDo.getOrderno());
|
|
|
+ workInProgressInventoryDo.setWorkinprocessstatus("待检验");
|
|
|
+
|
|
|
+ needAddWorkInProgressInventoryList.add(workInProgressInventoryDo);
|
|
|
+ }
|
|
|
+ if (ObjectUtil.isNotEmpty(needAddWorkInProgressInventoryList)) {
|
|
|
+ apsWorkInProgressInventoryService.saveBatch(needAddWorkInProgressInventoryList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|