|
@@ -6,23 +6,31 @@ import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
import com.fjhx.mes.entity.production.po.ProductionOrder;
|
|
|
+import com.fjhx.mes.entity.production.po.ProductionOrderDetail;
|
|
|
+import com.fjhx.mes.entity.production.po.ProductionProcesses;
|
|
|
import com.fjhx.mes.entity.report.dto.ReportLossesDetailsDto;
|
|
|
import com.fjhx.mes.entity.report.dto.ReportLossesDetailsSelectDto;
|
|
|
import com.fjhx.mes.entity.report.po.ReportLossesDetails;
|
|
|
import com.fjhx.mes.entity.report.vo.ReportLossesDetailsVo;
|
|
|
+import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
|
|
|
import com.fjhx.mes.mapper.report.ReportLossesDetailsMapper;
|
|
|
+import com.fjhx.mes.service.production.ProduceOrderDetailService;
|
|
|
import com.fjhx.mes.service.production.ProduceOrderService;
|
|
|
+import com.fjhx.mes.service.production.ProductionProcessesService;
|
|
|
import com.fjhx.mes.service.report.ReportLossesDetailsService;
|
|
|
+import com.fjhx.mes.service.technology.TechnologyProcessLineService;
|
|
|
import com.fjhx.tenant.utils.DeptUstil;
|
|
|
import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
|
import com.fjhx.wms.entity.stock.po.StockWait;
|
|
|
import com.fjhx.wms.entity.stock.po.StockWaitDetails;
|
|
|
import com.fjhx.wms.service.stock.StockWaitDetailsService;
|
|
|
import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -40,7 +48,6 @@ import java.util.stream.Collectors;
|
|
|
* 报损管理 服务实现类
|
|
|
* </p>
|
|
|
*
|
|
|
- * @author
|
|
|
* @since 2024-01-26
|
|
|
*/
|
|
|
@Service
|
|
@@ -50,13 +57,19 @@ public class ReportLossesDetailsServiceImpl extends ServiceImpl<ReportLossesDeta
|
|
|
private final StockWaitService stockWaitService;
|
|
|
private final StockWaitDetailsService stockWaitDetailsService;
|
|
|
private final ProduceOrderService produceOrderService;
|
|
|
+ private final ProductionProcessesService productionProcessesService;
|
|
|
+ private final TechnologyProcessLineService technologyProcessLineService;
|
|
|
+ private final ProduceOrderDetailService produceOrderDetailService;
|
|
|
|
|
|
@Autowired
|
|
|
- public ReportLossesDetailsServiceImpl(ProductInfoService productInfoService, StockWaitService stockWaitService, StockWaitDetailsService stockWaitDetailsService, ProduceOrderService produceOrderService) {
|
|
|
+ public ReportLossesDetailsServiceImpl(ProductInfoService productInfoService, StockWaitService stockWaitService, StockWaitDetailsService stockWaitDetailsService, ProduceOrderService produceOrderService, ProductionProcessesService productionProcessesService, TechnologyProcessLineService technologyProcessLineService, ProduceOrderDetailService produceOrderDetailService) {
|
|
|
this.productInfoService = productInfoService;
|
|
|
this.stockWaitService = stockWaitService;
|
|
|
this.stockWaitDetailsService = stockWaitDetailsService;
|
|
|
this.produceOrderService = produceOrderService;
|
|
|
+ this.productionProcessesService = productionProcessesService;
|
|
|
+ this.technologyProcessLineService = technologyProcessLineService;
|
|
|
+ this.produceOrderDetailService = produceOrderDetailService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -145,6 +158,51 @@ public class ReportLossesDetailsServiceImpl extends ServiceImpl<ReportLossesDeta
|
|
|
Long companyId = SecurityUtils.getCompanyId();
|
|
|
dto.setCompanyId(companyId);
|
|
|
|
|
|
+ ProductInfo materialInfo = productInfoService.getById(dto.getMaterialId());
|
|
|
+ Assert.notEmpty(materialInfo, "查询不到报损物品信息!");
|
|
|
+
|
|
|
+ //赋值报损时物料价格
|
|
|
+ dto.setMaterialPrice(materialInfo.getPrice());
|
|
|
+
|
|
|
+ //报损原材料 有工序 计算返工成本,返工道数
|
|
|
+ Long processId = dto.getProcessId();
|
|
|
+ if (ObjectUtil.isNotEmpty(processId) && ObjectUtil.notEqual(processId, -1)) {
|
|
|
+ //获取任务产品 工艺线路
|
|
|
+ ProductionOrderDetail productionOrderDetail = produceOrderDetailService.getById(dto.getProdTaskId());
|
|
|
+ Assert.notEmpty(productionOrderDetail, "查询不到生产任务信息!!!");
|
|
|
+ ProductInfo productInfo = productInfoService.getById(productionOrderDetail.getProductId());
|
|
|
+ Assert.notEmpty(productInfo, "查询不到产品信息");
|
|
|
+
|
|
|
+ //冗余产品id
|
|
|
+ dto.setProductId(productionOrderDetail.getProductId());
|
|
|
+
|
|
|
+ Map<Long, TechnologyProcessLine> technologyLineMap = technologyProcessLineService
|
|
|
+ .mapKEntity(TechnologyProcessLine::getTargetProcessesId, q -> q
|
|
|
+ .eq(TechnologyProcessLine::getTechnologyId, productInfo.getTechnologyId()));
|
|
|
+
|
|
|
+ Long tempProcessId = processId;
|
|
|
+ int reCount = 0;
|
|
|
+ BigDecimal rePrice = BigDecimal.ZERO;
|
|
|
+ while (true) {
|
|
|
+ ProductionProcesses productionProcesses = productionProcessesService.getById(tempProcessId);
|
|
|
+ TechnologyProcessLine technologyProcessLine = technologyLineMap.get(tempProcessId);
|
|
|
+ if (ObjectUtil.isEmpty(technologyProcessLine)) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ tempProcessId = technologyProcessLine.getSourceProcessesId();
|
|
|
+
|
|
|
+ reCount++;
|
|
|
+
|
|
|
+ //赋值报损工序价格
|
|
|
+ BigDecimal costPrice = productionProcesses.getCostPrice();
|
|
|
+ costPrice = ObjectUtil.isEmpty(costPrice) ? BigDecimal.ZERO : costPrice;
|
|
|
+ rePrice = rePrice.add(costPrice);
|
|
|
+ }
|
|
|
+ //赋值成本价
|
|
|
+ dto.setReCount(reCount);
|
|
|
+ dto.setRePrice(rePrice);
|
|
|
+ }
|
|
|
+
|
|
|
this.save(dto);
|
|
|
|
|
|
//保存附件
|
|
@@ -186,8 +244,18 @@ public class ReportLossesDetailsServiceImpl extends ServiceImpl<ReportLossesDeta
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @DSTransactional
|
|
|
public void delete(Long id) {
|
|
|
this.removeById(id);
|
|
|
+
|
|
|
+ StockWait stockWait = stockWaitService.getOne(q -> q.eq(StockWait::getBusinessId, id));
|
|
|
+ if (ObjectUtil.equals(stockWait.getStatus(), 0)) {
|
|
|
+ throw new ServiceException("报损已出库,禁止删除!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除待出库
|
|
|
+ stockWaitService.removeById(stockWait.getId());
|
|
|
+ stockWaitDetailsService.remove(q -> q.eq(StockWaitDetails::getStockWaitId, stockWait.getId()));
|
|
|
}
|
|
|
|
|
|
@Override
|