ezhizao_zx 1 rok temu
rodzic
commit
05a9b23f34

+ 83 - 16
src/main/java/cn/ezhizao/project/business/controller/BizLotController.java

@@ -1,12 +1,15 @@
 package cn.ezhizao.project.business.controller;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.ezhizao.common.utils.poi.ExcelUtil;
+import cn.ezhizao.common.utils.uuid.SnowflakeIdWorker;
 import cn.ezhizao.framework.aspectj.lang.annotation.Log;
 import cn.ezhizao.framework.aspectj.lang.enums.BusinessType;
 import cn.ezhizao.framework.web.controller.BaseController;
@@ -55,6 +58,16 @@ public class BizLotController extends BaseController
     @Resource
     private IBizTechnologicalProcessDetailService bizTechnologicalProcessDetailService;
     @Resource
+    private IBizProductionPlanDetailService bizProductionPlanDetailService;
+    @Resource
+    private IBizProductService bizProductService;
+    @Resource
+    private IBizDayworkItemService bizDayworkItemService;
+    @Resource
+    private IBizDayworkService bizDayworkService;
+    @Resource
+    private SnowflakeIdWorker snowflakeIdWorker;
+    @Resource
     HttpServletRequest request;
 
     /**
@@ -274,20 +287,74 @@ public class BizLotController extends BaseController
         return toAjax(bizLotService.removeBatchByIds(ids));
     }
 
-//    @PreAuthorize("@ss.hasPermi('business:lot:query')")
-//    @Log(title="分批信息", businessType = BusinessType.SELECT)
-//    @PostMapping("/getLotInfoForInBatches")
-//    public AjaxResult getLotInfoForInBatches(@RequestBody BizLot bizLot) {
-//        // 分批信息需要批次信息
-//        // 下达日期
-//        // 当前工段
-//        // 当前工序投产量
-//        List<BizLot> lots = bizLotService.getList(bizLot);
-//        if (lots.size() == 0) {
-//            return error("没有找到批次信息");
-//        }
-//        BizLot lot = lots.get(0);
-//
-//        return success(bizLotService.getLotInfoForInBatches(bizLot));
-//    }
+    @PreAuthorize("@ss.hasPermi('business:lot:query')")
+    @Log(title="分批信息", businessType = BusinessType.SELECT)
+    @PostMapping("/getLotInfoForInBatches")
+    public AjaxResult getLotInfoForInBatches(@RequestBody BizLot bizLot) {
+        // 分批信息需要批次信息
+
+        List<BizLot> lots = bizLotService.getList(bizLot);
+        if (lots.size() == 0) {
+            return error("没有找到批次信息");
+        }
+        BizLot lot = lots.get(0);
+        // 产品描述
+        BizProduct product = bizProductService.getById(lot.getProductId());
+        lot.setProductCode(product.getProductCode());
+        lot.setProductDescription(product.getDescription());
+        // 计划单号
+        BizProductionPlanDetail productionPlanDetail = bizProductionPlanDetailService.getById(lot.getProductionPlanDetailId());
+        lot.setProductionPlanNo(productionPlanDetail.getProductionPlanNo());
+        // 下达日期
+        lot.setIssueDate(productionPlanDetail.getIssueDate());
+        // 当前工段
+//        BizDaywork bizDaywork = bizDayworkService.query().eq("lot_id", bizLot.getId()).one();
+        BizDayworkItem conditions = new BizDayworkItem();
+        conditions.setLotId(lot.getId());
+        List<BizDayworkItem> dayworkItemList = bizDayworkItemService.getList(conditions);
+        BizDayworkItem dayworkItem = dayworkItemList.stream().filter(v -> !Arrays.asList("4", "5", "7").contains(v.getStatus())).collect(Collectors.toList()).stream().findFirst().orElse(new BizDayworkItem());
+        lot.setCurrentDept(dayworkItem.getDeptName());
+        // 当前工序投产量
+        lot.setProdNum(dayworkItem.getProdNum());
+        return success(lot);
+    }
+
+    @PreAuthorize("@ss.hasPermi('business:lot:add')")
+    @Log(title="分批保存", businessType = BusinessType.INSERT)
+    @PostMapping("/saveIsBatches")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult saveInBatches(@RequestBody BizLot bizLot) throws NoSuchFieldException, IllegalAccessException {
+        List<BizLot> sparateList = bizLot.getSparateList();
+        List<BizDaywork> bizDayworks = new ArrayList<>();
+        List<BizDayworkItem> bizDayworkItems = new ArrayList<>();
+        // 判断是否已报工
+        List<BizDaywork> baseDayworks = bizDayworkService.getList(new BizDaywork().setLotId(bizLot.getId()));
+        List<BizDayworkItem> baseDayworkItems = bizDayworkItemService.getList(new BizDayworkItem().setLotId(bizLot.getId()));
+        if (baseDayworks.size() > 0) {
+            sparateList.forEach(l -> {
+                if (l.getId() == null) {
+                    // 分批复制报工详情
+                    List<BizDaywork> newDayworks = new ArrayList<>();
+                    baseDayworks.forEach(v -> {
+                        BizDaywork newDaywork = new BizDaywork(v);
+                        v.setId(snowflakeIdWorker.nextId());
+                        v.setProcessQualifiedNum(l.getProdNum());
+                        List<BizDayworkItem> items = baseDayworkItems.stream().filter(e -> e.getDayworkId().equals(v.getId())).collect(Collectors.toList());
+                        items.forEach(e -> {
+                            BizDayworkItem item = new BizDayworkItem(e);
+                            item.setDayworkId(newDaywork.getId());
+                            item.setId(null);
+                            bizDayworkItems.add(item);
+                        });
+                        newDayworks.add(newDaywork);
+                    });
+                    bizDayworks.addAll(newDayworks);
+                } else {
+                    // 本批将当前报工数量改成分批后的数量。
+                }
+            });
+        }
+        // 将报工信息复制一份
+        return toAjax(bizLotService.saveOrUpdateBatch(sparateList) && (bizDayworks.isEmpty() || bizDayworkService.saveOrUpdateBatch(bizDayworks)) && (bizDayworkItems.isEmpty() || bizDayworkItemService.saveOrUpdateBatch(bizDayworkItems)));
+    }
 }

+ 53 - 4
src/main/java/cn/ezhizao/project/business/domain/BizDaywork.java

@@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
 
 import java.util.Date;
 import java.util.List;
@@ -22,9 +23,9 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName(value = "biz_daywork")
+@Accessors(chain = true)
 public class BizDaywork extends BaseEntity {
     private static final long serialVersionUID = 1L;
-
     /** 租户(厂别)id */
     @ApiModelProperty(value = "${comment}")
     private Long tenantId;
@@ -204,7 +205,55 @@ public class BizDaywork extends BaseEntity {
     private String productShaftCategoryName;
 
 
-
-
-
+    public BizDaywork() {}
+
+
+    public BizDaywork(BizDaywork copy) {
+        this.tenantId = copy.tenantId;
+        this.lotId = copy.lotId;
+        this.lotCode = copy.lotCode;
+        this.productionPlanId = copy.productionPlanId;
+        this.productionPlanDetailSubDetailId = copy.productionPlanDetailSubDetailId;
+        this.productionPlanDetailId = copy.productionPlanDetailId;
+        this.productId = copy.productId;
+        this.technologicalProcessId = copy.technologicalProcessId;
+        this.userId = copy.userId;
+        this.userName = copy.userName;
+        this.nickName = copy.nickName;
+        this.startTime = copy.startTime;
+        this.endTime = copy.endTime;
+        this.carrierName = copy.carrierName;
+        this.currentStatus = copy.currentStatus;
+        this.status = copy.status;
+        this.productionQuantity = copy.productionQuantity;
+        this.dayworkCarriers = copy.dayworkCarriers;
+        this.furnaceNumber = copy.furnaceNumber;
+        this.processSequence = copy.processSequence;
+        this.currentProcess = copy.currentProcess;
+        this.prevProcess = copy.prevProcess;
+        this.dayworkItemList = copy.dayworkItemList;
+        this.processQualifiedNum = copy.processQualifiedNum;
+        this.oneLotQuantity = copy.oneLotQuantity;
+        this.productDescription = copy.productDescription;
+        this.productionPlanNo = copy.productionPlanNo;
+        this.lineNumber = copy.lineNumber;
+        this.companyAlias = copy.companyAlias;
+        this.technologyVersion = copy.technologyVersion;
+        this.deptId = copy.deptId;
+        this.totalWorkingHours = copy.totalWorkingHours;
+        this.temporaryProcessQualifiedNum = copy.temporaryProcessQualifiedNum;
+        this.isLast = copy.isLast;
+        this.lastLotQuantity = copy.lastLotQuantity;
+        this.deptName = copy.deptName;
+        this.processAlias = copy.processAlias;
+        this.isFallback = copy.isFallback;
+        this.isWasteRecycling = copy.isWasteRecycling;
+        this.fromCode = copy.fromCode;
+        this.isWaste = copy.isWaste;
+        this.technologicalProcessDetailId = copy.technologicalProcessDetailId;
+        this.lotWaste = copy.lotWaste;
+        this.product = copy.product;
+        this.isAmend = copy.isAmend;
+        this.productShaftCategoryName = copy.productShaftCategoryName;
+    }
 }

+ 57 - 0
src/main/java/cn/ezhizao/project/business/domain/BizDayworkItem.java

@@ -8,6 +8,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.checkerframework.checker.units.qual.Acceleration;
 
 import java.util.Date;
 import java.util.List;
@@ -21,6 +23,7 @@ import java.util.List;
 @Data
 @EqualsAndHashCode(callSuper = true)
 @TableName(value = "biz_daywork_item")
+@Accessors(chain = true)
 public class BizDayworkItem extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
@@ -30,6 +33,7 @@ public class BizDayworkItem extends BaseEntity {
 
     /** daywork的id */
     @ApiModelProperty(value = "${comment}")
+    @TableField(value = "daywork_id")
     private Long dayworkId;
 
     /** 计划单id */
@@ -210,4 +214,57 @@ public class BizDayworkItem extends BaseEntity {
     @TableField(exist = false)
     private String processStepNumber;
 
+    public BizDayworkItem() {}
+
+    public BizDayworkItem(BizDayworkItem copy) {
+        this.tenantId = copy.tenantId;
+        this.dayworkId = copy.dayworkId;
+        this.productionPlanId = copy.productionPlanId;
+        this.productionPlanDetailId = copy.productionPlanDetailId;
+        this.productionPlanDetailSubDetailId = copy.productionPlanDetailSubDetailId;
+        this.productionPlanDetailSubDetailEquipmentId = copy.productionPlanDetailSubDetailEquipmentId;
+        this.lotId = copy.lotId;
+        this.vehicleId = copy.vehicleId;
+        this.qualifiedNum = copy.qualifiedNum;
+        this.technologicalProcessId = copy.technologicalProcessId;
+        this.processId = copy.processId;
+        this.equipmentDetailId = copy.equipmentDetailId;
+        this.equipmentDetailCode = copy.equipmentDetailCode;
+        this.status = copy.status;
+        this.userId = copy.userId;
+        this.recipientId = copy.recipientId;
+        this.deptId = copy.deptId;
+        this.deptName = copy.deptName;
+        this.carrierId = copy.carrierId;
+        this.userName = copy.userName;
+        this.nickName = copy.nickName;
+        this.startTime = copy.startTime;
+        this.lotCode = copy.lotCode;
+        this.endTime = copy.endTime;
+        this.workingHours = copy.workingHours;
+        this.rejectNum = copy.rejectNum;
+        this.reason = copy.reason;
+        this.processDemoId = copy.processDemoId;
+        this.turnoverArea = copy.turnoverArea;
+        this.turnoverType = copy.turnoverType;
+        this.daywork = copy.daywork;
+        this.processSequence = copy.processSequence;
+        this.nextProcess = copy.nextProcess;
+        this.carrierName = copy.carrierName;
+        this.productDescription = copy.productDescription;
+        this.process = copy.process;
+        this.userStatus = copy.userStatus;
+        this.dictDataLabel = copy.dictDataLabel;
+        this.type = copy.type;
+        this.preDeptName = copy.preDeptName;
+        this.prodNum = copy.prodNum;
+        this.processAlias = copy.processAlias;
+        this.technologicalProcessDetailId = copy.technologicalProcessDetailId;
+        this.workHoursTimestamp = copy.workHoursTimestamp;
+        this.groupRejectList = copy.groupRejectList;
+        this.temporaryProcessQualifiedNum = copy.temporaryProcessQualifiedNum;
+        this.flag = copy.flag;
+        this.firstProcessId = copy.firstProcessId;
+        this.processStepNumber = copy.processStepNumber;
+    }
 }

+ 18 - 2
src/main/java/cn/ezhizao/project/business/domain/BizLot.java

@@ -4,9 +4,12 @@ import cn.ezhizao.framework.aspectj.lang.annotation.Excel;
 import cn.ezhizao.framework.web.domain.BaseEntity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.checkerframework.checker.units.qual.A;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -168,8 +171,21 @@ public class BizLot extends BaseEntity {
 
     @TableField(exist = false)
     private List<BizTechnologicalWasteRecyclingDetail> processList;
-//    @TableField(exist = false)
-//    private Date
 
+    @TableField(exist = false)
+    @ApiModelProperty("下达日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date issueDate;
+
+    @TableField(exist = false)
+    @ApiModelProperty("当前工段")
+    private String currentDept;
+
+    @TableField(exist = false)
+    @ApiModelProperty("当前工序投产量")
+    private Integer prodNum;
+
+    @TableField(exist = false)
+    private List<BizLot> sparateList;
 
 }

+ 30 - 0
src/main/java/cn/ezhizao/project/business/mapper/BizProductMapper.java

@@ -0,0 +1,30 @@
+package cn.ezhizao.project.business.mapper;
+
+import cn.ezhizao.project.business.domain.BizProduct;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+/**
+ * 产品管理Mapper接口
+ *
+ * @author ezhizao
+ * @date 2023-11-13
+ */
+public interface BizProductMapper extends BaseMapper<BizProduct>
+{
+    /**
+     * 查询产品管理列表
+     *
+     * @param bizProduct 产品管理
+     * @return 产品管理集合
+     */
+    public List<BizProduct> getList(BizProduct bizProduct);
+
+    /**
+     * 物理删除
+     * @param bizProduct
+     * @return 删除结果
+    */
+    public int physicalDelete(BizProduct bizProduct);
+}

+ 31 - 0
src/main/java/cn/ezhizao/project/business/service/IBizProductService.java

@@ -0,0 +1,31 @@
+package cn.ezhizao.project.business.service;
+
+import cn.ezhizao.project.business.domain.BizProduct;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * 产品管理Service接口
+ *
+ * @author ezhizao
+ * @date 2023-11-13
+ */
+public interface IBizProductService extends IService<BizProduct>
+{
+    /**
+     * 查询产品管理列表
+     *
+     * @param bizProduct 产品管理
+     * @return 产品管理集合
+     */
+    public List<BizProduct> getList(BizProduct bizProduct);
+
+    /**
+     * 物理删除
+     * @param bizProduct
+     * @return 删除结果
+     */
+    public int physicalDelete(BizProduct bizProduct);
+
+}

+ 44 - 0
src/main/java/cn/ezhizao/project/business/service/impl/BizProductServiceImpl.java

@@ -0,0 +1,44 @@
+package cn.ezhizao.project.business.service.impl;
+
+import cn.ezhizao.project.business.domain.BizProduct;
+import cn.ezhizao.project.business.mapper.BizProductMapper;
+import cn.ezhizao.project.business.service.IBizProductService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 产品管理Service业务层处理
+ *
+ * @author ezhizao
+ * @date 2023-11-13
+ */
+@Service
+public class BizProductServiceImpl  extends ServiceImpl<BizProductMapper, BizProduct> implements IBizProductService
+{
+    @Resource
+    private BizProductMapper bizProductMapper;
+
+    /**
+     * 查询产品管理列表
+     *
+     * @param bizProduct 产品管理
+     * @return 产品管理
+     */
+    @Override
+    public List<BizProduct> getList(BizProduct bizProduct)
+    {
+        return bizProductMapper.getList(bizProduct);
+    }
+
+    /**
+     * 物理删除
+     * @param bizProduct
+     * @return 删除结果
+     */
+    @Override
+    public int physicalDelete(BizProduct bizProduct){ return bizProductMapper.physicalDelete(bizProduct); };
+
+}

+ 2 - 1
src/main/resources/mybatis/business/BizDayworkItemMapper.xml

@@ -21,7 +21,8 @@
         SELECT * FROM biz_daywork_item
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             deleted = 0
-            <if test="dayworkId != null and dayworkId != ''">AND daywork_id = #{dayworkId}</if>
+            <if test="dayworkId != null">AND daywork_id = #{dayworkId}</if>
+            <if test="lotId != null ">AND lot_id = #{lotId}</if>
 
         </trim>
         ORDER BY create_time DESC

+ 1 - 0
src/main/resources/mybatis/business/BizLotMapper.xml

@@ -54,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SELECT * FROM biz_lot
         <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
             deleted = 0
+            <if test="id != null"> AND id = #{id}</if>
             <if test="lotCode != null  and lotCode != ''"> AND lot_code = #{lotCode}</if>
             <if test="isWaste != null "> AND is_waste = #{isWaste}</if>
             <if test="isFallback != null "> AND is_fallback = #{isFallback}</if>

+ 49 - 0
src/main/resources/mybatis/business/BizProductMapper.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.ezhizao.project.business.product.mapper.BizProductMapper">
+
+    <resultMap type="cn.ezhizao.project.business.domain.BizProduct" id="BizProductResult">
+        <id column="id" property="id"/>
+    </resultMap>
+
+    <select id="getList" parameterType="BizProduct" resultMap="BizProductResult">
+        SELECT * FROM biz_product
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            deleted = 0
+            <if test="id!=null and id!=''"> AND id = #{id}</if>
+            <if test="productCode != null  and productCode != ''"> AND product_code like CONCAT('%', #{productCode}, '%')</if>
+            <if test="preStock != null  and preStock != ''"> AND pre_stock = #{preStock}</if>
+            <if test="type != null  and type != ''"> AND type = #{type}</if>
+            <if test="shaftBroadCategoryCode != null  and shaftBroadCategoryCode != ''"> AND shaft_broad_category_code = #{shaftBroadCategoryCode}</if>
+            <if test="shaftCategoryCode != null  and shaftCategoryCode != ''"> AND shaft_category_code = #{shaftCategoryCode}</if>
+            <if test="specification != null  and specification != ''"> AND specification LIKE CONCAT('%', #{specification}, '%')</if>
+            <if test="drawingNumber != null  and drawingNumber != ''"> AND drawing_number LIKE CONCAT('%',#{drawingNumber},'%')</if>
+            <if test="companyAlias != null  and companyAlias != ''">  AND company_alias LIKE CONCAT('%', #{companyAlias}, '%')</if>
+            <if test="description != null  and description != ''"> AND description like concat('%',#{description},'%')</if>
+            <if test="diameter != null "> AND diameter = #{diameter}</if>
+            <if test="lenght != null "> AND lenght = #{lenght}</if>
+            <if test="thickness != null "> AND thickness = #{thickness}</if>
+            <if test="companyCode != null  and companyCode != ''"> AND company_code = #{companyCode}</if>
+            <if test="salesmanCode != null  and salesmanCode != ''"> AND salesman_code = #{salesmanCode}</if>
+            <if test="stockKeeperCode != null  and stockKeeperCode != ''"> AND stock_keeper_code = #{stockKeeperCode}</if>
+            <if test="dispatcherCode != null  and dispatcherCode != ''"> AND dispatcher_code = #{dispatcherCode}</if>
+            <if test="productStatusCode != null  and productStatusCode != ''"> AND product_status_code = #{productStatusCode}</if>
+            <if test="productionTypeCode != null  and productionTypeCode != ''"> AND production_type_code = #{productionTypeCode}</if>
+            <if test="technicianCode != null  and technicianCode != ''"> AND technician_code = #{technicianCode}</if>
+            <if test="creatorCode != null  and creatorCode != ''"> AND creator_code = #{creatorCode}</if>
+            <if test="tenantId != null  and tenantId != 0"> AND tenant_id = #{tenantId}</if>
+        </trim>
+    </select>
+
+    <delete id="physicalDelete">
+        DELETE FROM biz_product
+        <trim prefix=" WHERE" suffix="" suffixOverrides="AND">
+            <if test="id != null">
+                id = #{id} AND
+            </if>
+       <!-- 删除条件为其他外键可以在这里加 -->
+        </trim>
+    </delete>
+</mapper>