浏览代码

生产报工

yzc 1 年之前
父节点
当前提交
edba585372

+ 11 - 7
hx-mes/src/main/java/com/fjhx/mes/entity/production/po/ProductionReportingDetail.java

@@ -1,8 +1,7 @@
 package com.fjhx.mes.entity.production.po;
 
-import com.ruoyi.common.core.domain.BasePo;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.util.Date;
+import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -11,7 +10,7 @@ import lombok.Setter;
  * 生产报工明细
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-30
  */
 @Getter
@@ -25,14 +24,19 @@ public class ProductionReportingDetail extends BasePo {
     private Long productionReportingId;
 
     /**
-     * 工序id
+     * 生产任务id
      */
-    private Long productionProcessesId;
+    private Long productionTaskId;
 
     /**
-     * 报工姓名
+     * 工序id
      */
-    private String name;
+    private Long productionProcessesId;
+
+//    /**
+//     * 报工姓名
+//     */
+//    private String name;
 
     /**
      * 报工数量

+ 15 - 3
hx-mes/src/main/java/com/fjhx/mes/entity/production/vo/ProductionReportingDetailVo.java

@@ -7,14 +7,26 @@ import lombok.Setter;
 /**
  * 生产报工明细列表查询返回值实体
  *
- * @author 
+ * @author
  * @since 2023-03-30
  */
 @Getter
 @Setter
 public class ProductionReportingDetailVo extends ProductionReportingDetail {
 
-    /**工序名称*/
-    private String productionProcessesName;
+    /**
+     * 订单编号
+     */
+    private String orderCode;
+
+    /**
+     * 工序名称
+     */
+    private String ProcessesName;
+
+    /**
+     * 创建人名称
+     */
+    private String createUserName;
 
 }

+ 56 - 10
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionReportingDetailServiceImpl.java

@@ -1,16 +1,28 @@
 package com.fjhx.mes.service.production.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+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.mes.entity.production.dto.ProductionReportingDetailDto;
+import com.fjhx.mes.entity.production.dto.ProductionReportingDetailSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionReportingDetail;
+import com.fjhx.mes.entity.production.po.ProductionTaskProgress;
+import com.fjhx.mes.entity.production.vo.ProductionReportingDetailVo;
 import com.fjhx.mes.mapper.production.ProductionReportingDetailMapper;
 import com.fjhx.mes.service.production.ProductionReportingDetailService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.mes.entity.production.vo.ProductionReportingDetailVo;
-import com.fjhx.mes.entity.production.dto.ProductionReportingDetailSelectDto;
+import com.fjhx.mes.service.production.ProductionTaskProgressService;
+import com.ruoyi.common.core.domain.BasePo;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.mes.entity.production.dto.ProductionReportingDetailDto;
-import cn.hutool.core.bean.BeanUtil;
+import com.ruoyi.system.utils.UserUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -18,17 +30,26 @@ import cn.hutool.core.bean.BeanUtil;
  * 生产报工明细 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-03-30
  */
 @Service
 public class ProductionReportingDetailServiceImpl extends ServiceImpl<ProductionReportingDetailMapper, ProductionReportingDetail> implements ProductionReportingDetailService {
 
+    @Autowired
+    private ProductionTaskProgressService productionTaskProgressService;
+
     @Override
     public Page<ProductionReportingDetailVo> getPage(ProductionReportingDetailSelectDto dto) {
         IWrapper<ProductionReportingDetail> wrapper = getWrapper();
         wrapper.orderByDesc("prd", ProductionReportingDetail::getId);
         Page<ProductionReportingDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        List<ProductionReportingDetailVo> records = page.getRecords();
+        if (ObjectUtil.isEmpty(records)) {
+            return page;
+        }
+        //赋值创建人名称
+        UserUtil.assignmentNickName(records, ProductionReportingDetail::getCreateUser, ProductionReportingDetailVo::setCreateUserName);
         return page;
     }
 
@@ -40,8 +61,33 @@ public class ProductionReportingDetailServiceImpl extends ServiceImpl<Production
     }
 
     @Override
-    public void add(ProductionReportingDetailDto productionReportingDetailDto) {
-        this.save(productionReportingDetailDto);
+    @DSTransactional
+    public synchronized void add(ProductionReportingDetailDto dto) {
+        Long productionTaskId = dto.getProductionTaskId();
+        Long productionProcessesId = dto.getProductionProcessesId();
+        Long quantity = dto.getQuantity();
+
+        Assert.notEmpty(productionTaskId, "生产任务id不能为空!");
+        Assert.notEmpty(productionProcessesId, "生产工序id不能为空!");
+        Assert.notEmpty(quantity, "报工数量不能为空!");
+
+
+        ProductionTaskProgress productionTaskProgress = productionTaskProgressService.getOne(q -> q
+                .eq(ProductionTaskProgress::getTaskId, productionTaskId)
+                .eq(ProductionTaskProgress::getProcessesId, productionProcessesId)
+        );
+
+        Assert.notEmpty(productionTaskProgress, "查询不到生产进度信息");
+
+        //更新生产进度信息
+        productionTaskProgressService.update(q -> q
+                .eq(ProductionTaskProgress::getId, productionTaskProgress.getId())
+                .setSql("finish_quantity = finish_quantity + " + dto.getQuantity())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+
+        this.save(dto);
     }
 
     @Override

+ 8 - 10
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionReportingServiceImpl.java

@@ -1,36 +1,34 @@
 package com.fjhx.mes.service.production.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
+import com.fjhx.mes.entity.production.dto.ProductionReportingDto;
+import com.fjhx.mes.entity.production.dto.ProductionReportingSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionProcesses;
 import com.fjhx.mes.entity.production.po.ProductionReporting;
 import com.fjhx.mes.entity.production.po.ProductionReportingDetail;
 import com.fjhx.mes.entity.production.po.ProductionTask;
 import com.fjhx.mes.entity.production.vo.ProductionReportingDetailVo;
+import com.fjhx.mes.entity.production.vo.ProductionReportingVo;
 import com.fjhx.mes.mapper.production.ProductionReportingMapper;
 import com.fjhx.mes.service.production.ProductionProcessesService;
 import com.fjhx.mes.service.production.ProductionReportingDetailService;
 import com.fjhx.mes.service.production.ProductionReportingService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.mes.service.production.ProductionTaskService;
-import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.mes.entity.production.vo.ProductionReportingVo;
-import com.fjhx.mes.entity.production.dto.ProductionReportingSelectDto;
-import com.ruoyi.common.utils.wrapper.IWrapper;
-import com.fjhx.mes.entity.production.dto.ProductionReportingDto;
-import cn.hutool.core.bean.BeanUtil;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 
 /**
@@ -89,7 +87,7 @@ public class ProductionReportingServiceImpl extends ServiceImpl<ProductionReport
                 Long productionProcessesId = productionReportingDetailVo.getProductionProcessesId();
                 ProductionProcesses productionProcesses = productionProcessesMap.get(productionProcessesId);
                 if (ObjectUtil.isNotEmpty(productionProcesses)) {
-                    productionReportingDetailVo.setProductionProcessesName(productionProcesses.getName());
+                    productionReportingDetailVo.setProcessesName(productionProcesses.getName());
                 }
             }
             productionReporting.setProductionReportingDetailVoList(productionReportingDetailVos);

+ 14 - 11
hx-mes/src/main/resources/mapper/production/ProductionReportingDetailMapper.xml

@@ -2,17 +2,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.mes.mapper.production.ProductionReportingDetailMapper">
     <select id="getPage" resultType="com.fjhx.mes.entity.production.vo.ProductionReportingDetailVo">
-        select
-            prd.id,
-            prd.production_reporting_id,
-            prd.production_processes_id,
-            prd.name,
-            prd.quantity,
-            prd.create_user,
-            prd.create_time,
-            prd.update_user,
-            prd.update_time
-        from production_reporting_detail prd
+        SELECT prd.id,
+               prd.production_processes_id,
+               prd.production_task_id,
+               prd.quantity,
+               prd.create_user,
+               prd.create_time,
+               prd.update_user,
+               prd.update_time,
+               po.`code` AS orderCode,
+               pp.`name` AS processesName
+        FROM production_reporting_detail prd
+                 LEFT JOIN production_order_detail pod ON prd.production_task_id = pod.id
+                 LEFT JOIN production_order po ON pod.produce_order_id = po.id
+                 LEFT JOIN production_processes pp ON prd.production_processes_id = pp.id
             ${ew.customSqlSegment}
     </select>
 

+ 4 - 2
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -2723,11 +2723,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         }
         String collect = arr.stream().collect(Collectors.joining(","));
         //消息推送 给归属公司的 总经理
+        String title = String.format("合同【%s】发生生产标签变更,变更如下:%s", contract.getCode(), collect);
         JSONObject msg = new JSONObject();
-        msg.put("msg", String.format("合同【%s】发生生产标签变更,变更如下:%s", contract.getCode(), collect));
         msg.put("business_id", dto.getId());
         List<Long> generalManagerIds = UserUtil.getUserIdsByRoleKey("general_manager", dto.getCompanyId());
-        WebSocketPush.byUsers(PushTypeEnum.MESSAGE, generalManagerIds, msg.toString(), PushBusinessTypeEnum.CONTRACT_PRODUCTION_TAG_UPDATE.getType());
+        for (Long generalManagerId : generalManagerIds) {
+            WebSocketPush.byUser(PushTypeEnum.MESSAGE, generalManagerId, title, PushBusinessTypeEnum.CONTRACT_PRODUCTION_TAG_UPDATE.getType(), msg.toString());
+        }
     }
 
 }

+ 9 - 4
hx-sale/src/main/java/com/fjhx/sale/service/sale/impl/SaleQuotationServiceImpl.java

@@ -217,11 +217,16 @@ public class SaleQuotationServiceImpl extends ServiceImpl<SaleQuotationMapper, S
         saveOrEdit(saleQuotationDto);
 
         //消息推送 给归属公司的 总经理
-        JSONObject meassage = new JSONObject();
-        meassage.put("msg", "您有新的报价单待报价,请尽快处理!");
-        meassage.put("business_id", saleQuotationDto.getId());
+        JSONObject msg = new JSONObject();
+        msg.put("business_id", saleQuotationDto.getId());
         List<Long> generalManagerIds = UserUtil.getUserIdsByRoleKey("general_manager", saleQuotationDto.getCompanyId());
-        WebSocketPush.byUsers(PushTypeEnum.MESSAGE, generalManagerIds, meassage.toString(), PushBusinessTypeEnum.NEW_QUOTATION.getType());
+        for (Long generalManagerId : generalManagerIds) {
+            WebSocketPush.byUser(PushTypeEnum.MESSAGE, generalManagerId,
+                    "您有新的报价单待报价,请尽快处理!",
+                    PushBusinessTypeEnum.NEW_QUOTATION.getType(),
+                    msg.toString());
+        }
+
     }
 
     @Override