diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/common/TicketsItemStatusEnum.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/TicketsItemStatusEnum.java new file mode 100644 index 00000000..14e79bd8 --- /dev/null +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/common/TicketsItemStatusEnum.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.common; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 维修工单子表(配件/项目)状态枚举 + * + * @author vinjor-m + */ +@AllArgsConstructor +@Getter +public enum TicketsItemStatusEnum { + /** + * 待派工 + */ + WAITING_WORK("01","待派工"), + /** + * 施工中 + */ + WORKING("02","施工中"), + /** + * 已完成 + */ + DONE("03","已完成"), + /** + * 未领料 + */ + WAITING_RECEIVE("04","未领料"), + /** + * 已领料 + */ + RECEIVED("05","已领料"); + + /** + * code + */ + private String code; + /** + * 名称 + */ + private String name; + + /** + * 根据code返回对应的枚举 + * @author vinjor-M + * @date 14:23 2024/10/16 + * @param code 枚举code + * @return cn.iocoder.yudao.common.SystemEnum + **/ + public static TicketsItemStatusEnum getEnumByCode(String code) { + for (TicketsItemStatusEnum roleEnum : TicketsItemStatusEnum.values()) { + if (roleEnum.getCode().equalsIgnoreCase(code)) { + // 找到对应的枚举 + return roleEnum; + } + } + throw new IllegalArgumentException("无效的枚举code:" + code); + } + +} diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java index f6b70473..823e578e 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java @@ -55,7 +55,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -188,6 +187,13 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl { item.setTicketId(ticketsRespVO.getId()); + if("01".equals(item.getItemType())){ + //维修项目,初始状态,待派工 + item.setItemStatus(TicketsItemStatusEnum.WAITING_WORK.getCode()); + }else if("02".equals(item.getItemType())){ + //维修配件,初始状态,待领料 + item.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode()); + } }); titemService.saveBatch(itemList); @@ -560,9 +566,9 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl ids = permissionApi.getUserIdByRoleId(roleInfo.getId()); if (CollectionUtil.isEmpty(ids)) return; // 如果是移交给总检就需要通知总检并让其总检 - if (respVO.getRecordType().equals("sgwczj") && respVO.getFinishType().equals("02")) { + if (RecordTypeEnum.SGWCZJ.getCode().equals(respVO.getRecordType()) && respVO.getFinishType().equals("02")) { // 工单移交给总检(理论上讲只有一个总检,就算有多个这里面也只给一个) AdminUserRespDTO user = adminUserApi.getUser(ids.get(0)); baseMapper.update(new LambdaUpdateWrapper() diff --git a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java index feb54588..9772a671 100644 --- a/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java +++ b/dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlTicketWaresServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.common.RepairRoleEnum; import cn.iocoder.yudao.common.SoStatusEnum; +import cn.iocoder.yudao.common.TicketsItemStatusEnum; import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.base.entity.RepairWorker; @@ -34,13 +35,13 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0; @@ -225,18 +226,55 @@ public class DlTicketWaresServiceImpl extends ServiceImpl() - .set(DlTicketWares::getStatus, respVO.getStatus()) - .eq(DlTicketWares::getId, respVO.getId()) - ); + //配件申请单id + String mainId = respVO.getId(); + //单据类型,现在只有配件申请单 01 + String type = respVO.getType(); + //单据状态 02 通过 05驳回 + String status = respVO.getStatus(); + //配件信息 + List repairItemList = respVO.getWares(); + DlTicketWares updateObj = this.getById(mainId); + String ticketMainId = updateObj.getTicketId(); + updateObj.setStatus(status); + this.updateById(updateObj); // 如果是通过并且是领料就还需要把配件信息加入到工单中 - if (ObjectUtil.isNotEmpty(respVO.getStatus()) && respVO.getStatus().equals("02") && respVO.getType().equals("01")) { + if (ObjectUtil.isNotEmpty(status) && status.equals("02") && type.equals("01")) { // 更新维修工单 + if(null== repairItemList || repairItemList.isEmpty()){ + repairItemList = new ArrayList<>(); + //配件没传,去库里面查需要的配件 + LambdaQueryWrapper queryWrapper= new LambdaQueryWrapper() + .eq(DlTwItem::getTwId,mainId); + List applyList = twItemService.list(queryWrapper); + if(!applyList.isEmpty()){ + //查配件库 + List waresList = repairWaresService.listByIds(applyList.stream().map(DlTwItem::getWaresId).collect(Collectors.toList())); + Map waresMap =waresList.stream().collect(Collectors.toMap(RepairWares::getId, Function.identity())); + //组装工单子表数据 + for (DlTwItem item:applyList){ + DlRepairTitem repairTitem = new DlRepairTitem(); + repairTitem.setTicketId(ticketMainId); + repairTitem.setItemCount(item.getWaresCount()); + repairTitem.setItemName(item.getWaresName()); + repairTitem.setItemUnit(waresMap.get(item.getWaresId()).getUnit()); + repairTitem.setItemPrice(new BigDecimal(waresMap.get(item.getWaresId()).getPrice())); + //默认不打折为1 + repairTitem.setItemDiscount(new BigDecimal(1)); + repairTitem.setItemMoney(new BigDecimal(repairTitem.getItemCount()).multiply(repairTitem.getItemPrice())); + //类型是配件 + repairTitem.setItemType("02"); + repairTitem.setPartId(item.getWaresId()); + repairTitem.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode()); + repairItemList.add(repairTitem); + } + } + } // 计算配件的总价 - BigDecimal reduce = respVO.getWares().stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal reduce = repairItemList.stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add); repairTicketsService.update(new LambdaUpdateWrapper() // 工单子项总数量增加上配件的数量 - .setSql("count = count + " + respVO.getWares().size()) + .setSql("count = count + " + repairItemList.size()) // 工单配件总价 .setSql("part_price = part_price + " + reduce) // 工单总价 @@ -247,18 +285,18 @@ public class DlTicketWaresServiceImpl extends ServiceImpl { + repairItemList.forEach(item -> { // 主表id - item.setTicketId(respVO.getTicketId()); + item.setTicketId(ticketMainId); // 类型为配件 item.setItemType("02"); // 状态为未领料 - item.setItemStatus("08"); + item.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode()); }); - repairTitemService.saveBatch(respVO.getWares()); + repairTitemService.saveBatch(repairItemList); // 发送通过的消息给仓库 RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.WAREHOUSE.getCode());