| | |
| | | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| | | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| | | import cn.iocoder.yudao.framework.operatelog.core.util.OperateLogUtils; |
| | | import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.oqc.vo.MesQcOqcImportExcelVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.oqc.vo.MesQcOqcPageReqVO; |
| | | import cn.iocoder.yudao.module.mes.controller.admin.qc.oqc.vo.MesQcOqcSaveReqVO; |
| | |
| | | |
| | | @Resource |
| | | private MesQcOqcMapper oqcMapper; |
| | | |
| | | @Resource |
| | | private ErpSaleOrderApi saleOrderApi; |
| | | |
| | | @Resource |
| | | private MesQcTemplateItemService templateItemService; |
| | |
| | | .setTemplateId(templateId) |
| | | .setSourceDocCode(sourceDocCode) |
| | | .setStatus(MesQcStatusEnum.DRAFT.getStatus()); |
| | | if (createReqVO.getSourceLineId() != null) { |
| | | oqc.setReelNo(resolveSalesReelNo(productSalesLineService |
| | | .validateProductSalesLineExists(createReqVO.getSourceLineId()))); |
| | | } |
| | | oqcMapper.insert(oqc); |
| | | |
| | | // 3. 从模板指标自动生成检验行 |
| | |
| | | @Override |
| | | public void updateOqc(MesQcOqcSaveReqVO updateReqVO) { |
| | | // 1.1 校验存在 + 草稿状态 |
| | | validateOqcStatusPrepare(updateReqVO.getId()); |
| | | MesQcOqcDO existingOqc = validateOqcStatusPrepare(updateReqVO.getId()); |
| | | // 1.2 校验数据 |
| | | validateOqcSaveData(updateReqVO); |
| | | |
| | |
| | | updateObj.setSourceDocType(null).setSourceDocId(null).setSourceLineId(null); // 不允许修改来源单据 |
| | | updateObj.setTemplateId(null); // 不允许修改模板 |
| | | updateObj.setItemId(null); // 不允许修改物料 |
| | | if (existingOqc.getSourceLineId() != null) updateObj.setReelNo(null); // 来源盘号保持快照 |
| | | // 编辑时允许清空客户;完成检验等局部更新仍保留原客户。 |
| | | updateObj.setClientId(null); |
| | | oqcMapper.update(updateObj, new LambdaUpdateWrapper<MesQcOqcDO>() |
| | |
| | | oqc.setClientId(clientId); |
| | | oqc.setItemId(line.getItemId()); |
| | | oqc.setBatchCode(line.getBatchCode()); |
| | | oqc.setReelNo(resolveSalesReelNo(line)); |
| | | oqc.setOutQuantity(line.getQuantity()); |
| | | oqc.setCheckQuantity(BigDecimal.ZERO); // 待填写 |
| | | oqc.setQualifiedQuantity(BigDecimal.ZERO); // 待填写 |
| | |
| | | return oqc.getId(); |
| | | } |
| | | |
| | | private String resolveSalesReelNo(MesWmProductSalesLineDO line) { |
| | | if (line == null || line.getSaleOrderItemId() == null) return null; |
| | | var item = saleOrderApi.getSaleOrderItem(line.getSaleOrderItemId()).getCheckedData(); |
| | | return item == null ? null : item.getReelNo(); |
| | | } |
| | | |
| | | /** |
| | | * 获取物料信息(编码+名称) |
| | | */ |