Ver código fonte

修复溯源bug

liuyaowen 9 meses atrás
pai
commit
0d8faa9809

+ 11 - 5
src/main/java/com/yunfeiyun/agmp/tss/controller/AgmTaskPickController.java

@@ -18,10 +18,7 @@ import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
 import com.yunfeiyun.agmp.common.web.system.service.ISysResService;
 import com.yunfeiyun.agmp.tss.domain.WmsWarehouse;
 import com.yunfeiyun.agmp.tss.domain.reqvo.*;
-import com.yunfeiyun.agmp.tss.domain.resvo.AgmTaskPickListResVo;
-import com.yunfeiyun.agmp.tss.domain.resvo.MppMaterialResVo;
-import com.yunfeiyun.agmp.tss.domain.resvo.WmsFinishgoodsListExportResVo;
-import com.yunfeiyun.agmp.tss.domain.resvo.WmsFinishgoodsListResVo;
+import com.yunfeiyun.agmp.tss.domain.resvo.*;
 import com.yunfeiyun.agmp.tss.mapper.SpmOrderMapper;
 import com.yunfeiyun.agmp.tss.service.IAgmTaskpickService;
 import com.yunfeiyun.agmp.tss.service.IMppMaterialService;
@@ -40,6 +37,8 @@ import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 溯源信息Controller
@@ -106,13 +105,20 @@ public class AgmTaskPickController extends BaseController
         startPage();
         reqVo.setTid(SecurityUtils.getTid());
         List<WmsFinishgoodsListResVo> list = agmTaskpickService.selectWmsFinishgoodsList(reqVo);
+        List<String> stockIds = list.stream().map(WmsFinishgoodsListResVo::getStockId).collect(Collectors.toList());
+        List<SpmOrderNoSendAmountResVo> spmOrderList = spmOrderMapper.selectSpmOrderNoSendAmount(stockIds);
+        Map<String,BigDecimal> spmOrderMap = spmOrderList.stream().collect(Collectors.toMap(SpmOrderNoSendAmountResVo::getStockId,SpmOrderNoSendAmountResVo::getOrderGoodscount));
         for (WmsFinishgoodsListResVo wmsFinishgoodsListResVo : list) {
             //查询溯源图片
             List<SysRes> res = sysResService.selectResByBusIdAndTid(wmsFinishgoodsListResVo.getSourceinfoId(), ResConstants.BizType.SOURCE_INFO_AVATAR.getKey(),reqVo.getTid());
             if (res.size() > 0) {
                 wmsFinishgoodsListResVo.setSourceinfoAvatar(res.get(0).getResUrl());
             }
-
+            BigDecimal sendOrderAmount = spmOrderMap.get(wmsFinishgoodsListResVo.getStockId());
+            if(null != sendOrderAmount){
+                BigDecimal stockAmount = new BigDecimal(wmsFinishgoodsListResVo.getStockAmount()).subtract(sendOrderAmount);
+                wmsFinishgoodsListResVo.setStockAmount(stockAmount.compareTo(BigDecimal.ZERO)<0?"0":stockAmount.toString());
+            }
             //查询加工前产品编号
             if ("1".equals(wmsFinishgoodsListResVo.getFinishgoodsType())) {
                 MppMaterialReqVo reqVo1 = new MppMaterialReqVo();

+ 1 - 0
src/main/java/com/yunfeiyun/agmp/tss/controller/SpmOrderController.java

@@ -233,6 +233,7 @@ public class SpmOrderController extends BaseController {
     @GetMapping("/city/stat")
     public TableDataInfo spmOrderCityStat(SelectCountOfScreenReqVo reqVo) {
         startPage();
+        reqVo.setTid(SecurityUtils.getTid());
         List<SpmOrderStatResVo> spmOrderStatResVos = spmOrderService.selectCountGroupByCity(reqVo);
         return getDataTable(spmOrderStatResVos);
     }

+ 4 - 1
src/main/java/com/yunfeiyun/agmp/tss/controller/TssScanrcdController.java

@@ -8,6 +8,7 @@ import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
 import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
 import com.yunfeiyun.agmp.common.enums.BusinessType;
 import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
 import com.yunfeiyun.agmp.tss.domain.TssScanrcd;
 import com.yunfeiyun.agmp.tss.domain.reqvo.SelectCountOfScreenReqVo;
@@ -44,8 +45,10 @@ public class TssScanrcdController extends BaseController {
     @PreAuthorize("@ss.hasPermi('tss:scanrcd:list')")
     @GetMapping("/list")
     public TableDataInfo list(TssScanrcdReqVo tssScanrcdReqVo) {
+        if(StringUtils.isEmpty(tssScanrcdReqVo.getTid())){
+            tssScanrcdReqVo.setTid(SecurityUtils.getTid());
+        }
         startPage();
-        tssScanrcdReqVo.setTid(SecurityUtils.getTid());
         List<TssScanrcdResVo> list = tssScanrcdService.selectTssScanrcdList(tssScanrcdReqVo);
         return getDataTable(list);
     }

+ 5 - 1
src/main/java/com/yunfeiyun/agmp/tss/controller/WmsSupplierController.java

@@ -8,6 +8,7 @@ import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
 import com.yunfeiyun.agmp.common.enums.BusinessType;
 import com.yunfeiyun.agmp.common.framework.manager.ResManager;
 import com.yunfeiyun.agmp.common.utils.SecurityUtils;
+import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.common.utils.poi.ExcelUtil;
 import com.yunfeiyun.agmp.common.web.system.domain.SysRes;
 import com.yunfeiyun.agmp.common.web.system.service.ISysResService;
@@ -22,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -46,8 +48,10 @@ public class WmsSupplierController extends BaseController {
     @PreAuthorize("@ss.hasPermi('wms:supplier:list')")
     @GetMapping("/list")
     public TableDataInfo list(WmsSupplier wmsSupplier) {
-        wmsSupplier.setTid(SecurityUtils.getTid());
         startPage();
+        if(StringUtils.isNotEmpty(wmsSupplier.getSupplierTypeStr())){
+            wmsSupplier.setSupplierTypes(Arrays.asList(wmsSupplier.getSupplierTypeStr().split(",")));
+        }
         List<WmsSupplierListResVo> list = wmsSupplierService.selectWmsSupplierListResVoList(wmsSupplier);
         return getDataTable(list);
     }

+ 5 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/WmsSupplier.java

@@ -4,6 +4,8 @@ import com.yunfeiyun.agmp.common.annotation.Excel;
 import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * 供应商对象 WmsSupplier
  * 
@@ -58,6 +60,9 @@ public class WmsSupplier extends BaseEntity {
 
     private String tid;
 
+    private List<String> supplierTypes;
+
+    private String supplierTypeStr;
 
 
 

+ 11 - 0
src/main/java/com/yunfeiyun/agmp/tss/domain/resvo/SpmOrderNoSendAmountResVo.java

@@ -0,0 +1,11 @@
+package com.yunfeiyun.agmp.tss.domain.resvo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SpmOrderNoSendAmountResVo {
+    private String stockId;
+    private BigDecimal orderGoodscount;
+}

+ 2 - 0
src/main/java/com/yunfeiyun/agmp/tss/mapper/SpmOrderMapper.java

@@ -101,4 +101,6 @@ public interface SpmOrderMapper  {
     public Integer selectGoodsTypeCountOfTssTrace(SelectOfTssStatReqVo reqVo);
     /** 溯源统计页面使用:产品销售地(气泡图) */
     public List<SpmOrderStatResVo> selectMoneyGroupByCity(SelectOfTssStatReqVo reqVo);
+
+    List<SpmOrderNoSendAmountResVo> selectSpmOrderNoSendAmount(List<String> stockIds);
 }

+ 2 - 1
src/main/java/com/yunfeiyun/agmp/tss/service/impl/TssTracecodeapplyServiceImpl.java

@@ -24,6 +24,7 @@ import com.yunfeiyun.agmp.tss.service.ITssTracecodeapplyService;
 import com.yunfeiyun.agmp.tss.service.IWmsGoodsService;
 import com.yunfeiyun.agmp.tss.service.IWmsSupplierService;
 
+import com.yunfeiyun.agmp.tss.util.TssTraceCodeTplQRCodeUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -178,7 +179,7 @@ public class TssTracecodeapplyServiceImpl implements ITssTracecodeapplyService {
         Map<String,TssTracecodetplparam> paramMap = tssTracecodetplparams.stream().collect(Collectors.toMap(TssTracecodetplparam::getTplparamBustype,item->item));
         for(TssTraceCodeApplyResVo tssTraceCodeApplyResVo : resVoList){
 //            tssTraceCodeApplyResVo.setQRCodeUrl(paramMap.get(BusType.TRACING_QR_CODE.name()).getTplparamData() + "?tarcecodeapplyno="+paramMap.get(BusType.TRACING_NO.name()).getTplparamData() );
-            tssTraceCodeApplyResVo.setQRCodeUrl(paramMap.get(BusType.TRACING_QR_CODE.name()).getTplparamData() + "?no=" + tssTraceCodeApplyResVo.getTarcecodeapplyno()+"&id="+tssTracecodeapply.getTid());
+            tssTraceCodeApplyResVo.setQRCodeUrl(TssTraceCodeTplQRCodeUtil.getQrCodeUrl(paramMap.get(BusType.TRACING_QR_CODE.name())) + "?no=" + tssTraceCodeApplyResVo.getTarcecodeapplyno()+"&id="+tssTracecodeapply.getTid());
         }
         return resVoList;
     }

+ 3 - 2
src/main/java/com/yunfeiyun/agmp/tss/service/impl/TssTracecodetplServiceImpl.java

@@ -20,6 +20,7 @@ import com.yunfeiyun.agmp.tss.domain.resvo.TssTracecodeapplyExportResVo;
 import com.yunfeiyun.agmp.tss.domain.resvo.WmsFinishgoodsSourceInfo;
 import com.yunfeiyun.agmp.tss.mapper.*;
 import com.yunfeiyun.agmp.tss.service.ITssTracecodetplService;
+import com.yunfeiyun.agmp.tss.util.TssTraceCodeTplQRCodeUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator;
 import org.apache.commons.compress.archivers.zip.UnixStat;
@@ -264,7 +265,7 @@ public class TssTracecodetplServiceImpl implements ITssTracecodetplService {
         queryParam.setTid(tid);
         List<TssTracecodetplparam> params = tssTracecodetplparamMapper.selectTssTracecodetplparamList(queryParam);
         LinkedHashMap<String, TssTracecodetplparam> paramsMap = params.stream().collect(Collectors.toMap(TssTracecodetplparam::getTplparamBustype, ObjectUtil::clone, (a, b) -> b, LinkedHashMap::new));
-        String url = paramsMap.get(BusType.TRACING_QR_CODE.name()).getTplparamData() + "?id="+tid+"&no=";
+        String url = TssTraceCodeTplQRCodeUtil.getQrCodeUrl(paramsMap.get(BusType.TRACING_QR_CODE.name())) + "?id="+tid+"&no=";
         LinkedList<TssTracecodeapplyExportResVo> data = new LinkedList<>();
         for (TssTracecodeapply tssTracecodeapply : tssTracecodeapplies) {
             TssTracecodeapplyExportResVo tssTracecodeapplyExportResVo = new TssTracecodeapplyExportResVo();
@@ -340,7 +341,7 @@ public class TssTracecodetplServiceImpl implements ITssTracecodetplService {
         if (null != paramsMap.get(BusType.TRACING_QR_CODE.name())) {
             TssTracecodetplparam tracingQRCodeParam = new TssTracecodetplparam();
             BeanUtils.copyProperties(paramsMap.get(BusType.TRACING_QR_CODE.name()), tracingQRCodeParam);
-            tracingQRCodeParam.setTplparamData(tracingQRCodeParam.getTplparamData() + "?no=" + tssTracecodeapply.getTarcecodeapplyno()+"&id="+tssTracecodeapply.getTid());
+            tracingQRCodeParam.setTplparamData(TssTraceCodeTplQRCodeUtil.getQrCodeUrl(tracingQRCodeParam) + "?no=" + tssTracecodeapply.getTarcecodeapplyno()+"&id="+tssTracecodeapply.getTid());
             paramsMap.put(BusType.TRACING_QR_CODE.name(), tracingQRCodeParam);
         }
         if (null != paramsMap.get(BusType.TRACING_BARCODE.name())) {

+ 12 - 0
src/main/java/com/yunfeiyun/agmp/tss/util/TssTraceCodeTplQRCodeUtil.java

@@ -0,0 +1,12 @@
+package com.yunfeiyun.agmp.tss.util;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.yunfeiyun.agmp.tss.domain.TssTracecodetplparam;
+
+public class TssTraceCodeTplQRCodeUtil {
+
+    public static String getQrCodeUrl(TssTracecodetplparam tssTracecodetplparam){
+        // 目前全局固定
+        return SpringUtil.getProperty("BASE_URL")+"/tssh5/#/";
+    }
+}

+ 2 - 1
src/main/resources/application-dev.yml

@@ -11,7 +11,7 @@ application:
   # 文件路径 示例( Windows配置D:/yunfei/farmwork/uploadPath,Linux配置 /home/yunfei/farmwork/uploadPath)
   profile: /data/AGMP/tss
   # 获取ip地址开关
-  addressEnabled: false
+  addressEnabled: true
   # 验证码类型 math 数组计算 char 字符验证
   captchaType: math
   # 顶级菜单的父Id
@@ -282,3 +282,4 @@ map:
   gaode:
     api: http://restapi.amap.com
     key: 78ce288400f4fc6d9458989875c833c2
+BASE_URL: http://192.168.1.228:7000

+ 2 - 1
src/main/resources/application-test.yml

@@ -11,7 +11,7 @@ application:
   # 文件路径 示例( Windows配置D:/yunfei/farmwork/uploadPath,Linux配置 /home/yunfei/farmwork/uploadPath)
   profile: /data/AGMP/tss
   # 获取ip地址开关
-  addressEnabled: false
+  addressEnabled: true
   # 验证码类型 math 数组计算 char 字符验证
   captchaType: math
   # 顶级菜单的父Id
@@ -268,3 +268,4 @@ map:
   gaode:
     api: http://restapi.amap.com
     key: 78ce288400f4fc6d9458989875c833c2
+BASE_URL: http://192.168.1.231:7000

+ 12 - 0
src/main/resources/mapper/SpmOrderMapper.xml

@@ -173,6 +173,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
         </where>
+        order by so.orderStatus asc , so.orderNo desc
     </select>
 
     <select id="selectSpmOrderLogisticsInfoReqVo" parameterType="com.yunfeiyun.agmp.tss.domain.reqvo.SpmOrderLogisticsInfoReqVo" resultType="com.yunfeiyun.agmp.tss.domain.resvo.SpmOrderLogisticsInfoResVo">
@@ -208,7 +209,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 </foreach>
             </if>
         </where>
+        group by so.orderId
         order by orderSenddate DESC
+
     </select>
 
     <select id="selectSpmOrderLogisticsSumInfo" parameterType="com.yunfeiyun.agmp.tss.domain.reqvo.SpmOrderLogisticsInfoReqVo" resultType="com.yunfeiyun.agmp.tss.domain.resvo.SpmOrderLogisticsSumInfoResVo">
@@ -643,4 +646,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         and so.tid = #{tid}
     </select>
 
+    <select id="selectSpmOrderNoSendAmount"  resultType="com.yunfeiyun.agmp.tss.domain.resvo.SpmOrderNoSendAmountResVo">
+        select sum(orderGoodscount) orderGoodscount,stockId from SpmOrder where stockId in
+        <foreach collection="list" open="(" separator="," close=")" item="item">
+            #{item}
+        </foreach>
+        and orderStatus = '0'
+        GROUP BY stockId
+    </select>
+
 </mapper>

+ 1 - 0
src/main/resources/mapper/TssScanrcdMapper.xml

@@ -60,6 +60,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="tarcecodeapplyno != null and tarcecodeapplyno !=''">and tca.tarcecodeapplyno = #{tarcecodeapplyno}</if>
             <if test="isReadNoOrderScanLog == false">and ts.orderId > '0'</if>
         </where>
+        group by ts.scanrcdId
     </select>
 
     <select id="selectCountOfTssScanrcd" parameterType="SelectCountOfScreenReqVo" resultType="Integer">

+ 2 - 0
src/main/resources/mapper/WmsFinishgoodsMapper.xml

@@ -187,6 +187,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ws.stockId = #{stockId}
         and ws.tid = #{tid}
 
+        limit 1
+
     </select>
     <select id="selectCount" parameterType="String" resultType="int">
         select count(1) from WmsFinishgoods where sourceinfoId = #{sourceinfoId} and tid = #{tid}

+ 6 - 0
src/main/resources/mapper/WmsSupplierMapper.xml

@@ -118,6 +118,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="supplierCreateddate != null  and supplierCreateddate != ''"> and supplierCreateddate = #{supplierCreateddate}</if>
             <if test="supplierType != null  and supplierType != ''"> and a.supplierType = #{supplierType}</if>
             <if test="cusareaId != null and cusareaId != ''">and cusareaId = #{cusareaId}</if>
+            <if test="supplierTypes != null and supplierTypes != ''">
+                and supplierType in
+                <foreach collection="supplierTypes" open="(" separator="," close=")" item="item">
+                    #{item}
+                </foreach>
+            </if>
         </where>
     </select>
 </mapper>