|
@@ -1,18 +1,27 @@
|
|
package cn.iocoder.yudao.module.pms.service.iotmainworkorder;
|
|
package cn.iocoder.yudao.module.pms.service.iotmainworkorder;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderSaveReqVO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderSaveVO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbom.vo.IotMainWorkOrderBomSaveReqVO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorderbommaterial.vo.IotMainWorkOrderBomMaterialSaveReqVO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorderbom.IotMainWorkOrderBomDO;
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorderbommaterial.IotMainWorkOrderBomMaterialDO;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorder.IotMainWorkOrderMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorder.IotMainWorkOrderMapper;
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorderbom.IotMainWorkOrderBomMapper;
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorderbommaterial.IotMainWorkOrderBomMaterialMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.redis.BizNoRedisDAO;
|
|
import cn.iocoder.yudao.module.pms.dal.redis.BizNoRedisDAO;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.validation.annotation.Validated;
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
-
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
@@ -31,6 +40,10 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
|
|
private IotMainWorkOrderMapper iotMainWorkOrderMapper;
|
|
private IotMainWorkOrderMapper iotMainWorkOrderMapper;
|
|
@Resource
|
|
@Resource
|
|
private BizNoRedisDAO bizNoRedisDAO;
|
|
private BizNoRedisDAO bizNoRedisDAO;
|
|
|
|
+ @Resource
|
|
|
|
+ private IotMainWorkOrderBomMapper iotMainWorkOrderBomMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private IotMainWorkOrderBomMaterialMapper iotMainWorkOrderBomMaterialMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Long createIotMainWorkOrder(IotMainWorkOrderSaveReqVO createReqVO) {
|
|
public Long createIotMainWorkOrder(IotMainWorkOrderSaveReqVO createReqVO) {
|
|
@@ -90,4 +103,43 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
|
|
iotMainWorkOrderMapper.insertBatch(workOrders);
|
|
iotMainWorkOrderMapper.insertBatch(workOrders);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void fillWorkOrder(IotMainWorkOrderSaveVO saveVO) {
|
|
|
|
+ if (ObjectUtil.isEmpty(saveVO)) {
|
|
|
|
+ throw exception(IOT_MAIN_WORK_ORDER_NOT_EXISTS);
|
|
|
|
+ }
|
|
|
|
+ IotMainWorkOrderSaveReqVO mainWorkOrder = saveVO.getMainWorkOrder();
|
|
|
|
+ if (ObjectUtil.isEmpty(saveVO.getMainWorkOrder())) {
|
|
|
|
+ throw exception(IOT_MAIN_WORK_ORDER_NOT_EXISTS);
|
|
|
|
+ }
|
|
|
|
+ List<IotMainWorkOrderBomSaveReqVO> workOrderBOMs = saveVO.getMainWorkOrderBom();
|
|
|
|
+ if (ObjectUtil.isEmpty(workOrderBOMs)) {
|
|
|
|
+ throw exception(IOT_MAIN_WORK_ORDER_NOT_EXISTS);
|
|
|
|
+ }
|
|
|
|
+ List<IotMainWorkOrderBomMaterialSaveReqVO> workOrderMaterials = saveVO.getMainWorkOrderMaterials();
|
|
|
|
+ if (ObjectUtil.isEmpty(workOrderMaterials)) {
|
|
|
|
+ throw exception(IOT_MAIN_WORK_ORDER_NOT_EXISTS);
|
|
|
|
+ }
|
|
|
|
+ // todo 保养工单 主表 还有 保养费用 、人工费用 、其他费用
|
|
|
|
+ IotMainWorkOrderDO updateObj = BeanUtils.toBean(mainWorkOrder, IotMainWorkOrderDO.class);
|
|
|
|
+ iotMainWorkOrderMapper.updateById(updateObj);
|
|
|
|
+ // 保养工单明细
|
|
|
|
+ List<IotMainWorkOrderBomDO> workOrderBomDOS = new ArrayList<>();
|
|
|
|
+ workOrderBOMs.forEach(bom -> {
|
|
|
|
+ IotMainWorkOrderBomDO tempBom = BeanUtils.toBean(bom, IotMainWorkOrderBomDO.class);
|
|
|
|
+ workOrderBomDOS.add(tempBom);
|
|
|
|
+ });
|
|
|
|
+ iotMainWorkOrderBomMapper.updateBatch(workOrderBomDOS);
|
|
|
|
+ // 保养工单 bom 明细关联的物料消耗
|
|
|
|
+ List<IotMainWorkOrderBomMaterialDO> workOrderBomMaterialDOS = new ArrayList<>();
|
|
|
|
+ workOrderMaterials.forEach(material -> {
|
|
|
|
+ IotMainWorkOrderBomMaterialDO tempMaterial = BeanUtils.toBean(material, IotMainWorkOrderBomMaterialDO.class);
|
|
|
|
+ tempMaterial.setWorkOrderId(mainWorkOrder.getId());
|
|
|
|
+ workOrderBomMaterialDOS.add(tempMaterial);
|
|
|
|
+ });
|
|
|
|
+ iotMainWorkOrderBomMaterialMapper.insertBatch(workOrderBomMaterialDOS);
|
|
|
|
+ // todo 处理库存减少
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|