Kaynağa Gözat

【BL_2018100024】调拨单拨入拨出仓库一致不能审核

guq 7 yıl önce
ebeveyn
işleme
97f455a039

+ 2 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -126,6 +126,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     UNENOUGH_DETAIL_STOCK(76300, "行%s库存不足"),
     UNENOUGH_STOCK(76400, "%s :库存不足"),
     UNPOSTSTOCKPROFIT_EXISTS(76500, "存在当前仓库+物料未审核的盘盈盘亏单"),
+    STORAGE_WAREHOUSE_SAME(76501, "调拨单拨入拨出仓库一致"),
+    STORAGE_WAREHOUSE_SAMES(76502, "调拨单: %s 拨入拨出仓库一致"),
     STOCKPROFIT_NULL(76600, "没有需要生成的盘盈盘亏单")
     ;
     private int code;

+ 4 - 0
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutMapper.java

@@ -2,9 +2,11 @@ package com.usoftchina.saas.storage.mapper;
 
 
 import com.usoftchina.saas.base.mapper.CommonBaseMapper;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.storage.po.ProdInOut;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
 import java.util.Map;
 
 public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
@@ -31,4 +33,6 @@ public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
     void unPost(Map<String, Object> map);
 
     void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long pi_id);
+
+    String checkWarehouse(List<DocBaseDTO> baseDTOs);
 }

+ 16 - 1
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java

@@ -219,6 +219,17 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         Long id = null;
         DocBaseDTO baseDTO = new DocBaseDTO();
         if (null != formData) {
+            //检测调拨单拨入、拨出仓库是否一致
+            List<ProdIODetailDTO> items = formData.getItems();
+            int count = 0;
+            for (ProdIODetailDTO item : items) {
+                if (item.getPd_inwhcode().equals(item.getPd_whcode())) {
+                    count++;
+                }
+            }
+            if (count > 0) {
+                throw new BizException(BizExceptionCode.STORAGE_WAREHOUSE_SAME);
+            }
             id = formData.getMain().getId();
             if (StringUtils.isEmpty(id)|| "0".equals(String.valueOf(id))) {
                 baseDTO = saveFormData(formData);
@@ -232,7 +243,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    private void singleAudit(ProdInOutDTO prodInOutDTO) {
+    public void singleAudit(ProdInOutDTO prodInOutDTO) {
         String pi_class= prodInOutDTO.getPi_class();
         String pi_inoutno = prodInOutDTO.getPi_inoutno();
         String pi_statuscode = prodInOutDTO.getPi_statuscode();
@@ -263,6 +274,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 baseDTOs.getBaseDTOs().size() == 0) {
             return "没有可审核单据。";
         }
+        String codes = getMapper().checkWarehouse(baseDTOs.getBaseDTOs());
+        if (!StringUtils.isEmpty(codes)) {
+            throw new BizException(BizExceptionCode.STORAGE_WAREHOUSE_SAMES.getCode(), String.format(BizExceptionCode.STORAGE_WAREHOUSE_SAMES.getMessage(), codes));
+        }
         StringBuffer errorMsg = new StringBuffer();
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
             try {

+ 6 - 0
applications/storage/storage-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -418,6 +418,12 @@
     update prodinout set creatorId = #{userId} , creatorName=#{userName},createTime=NOW() where pi_id=#{id}
   </update>
 
+  <select id="checkWarehouse" resultType="string" parameterType="com.usoftchina.saas.commons.dto.DocBaseDTO">
+    select GROUP_CONCAT( DISTINCT pi_inoutno) from prodinout left join prodiodetail on pi_id=pd_piid where pd_whcode=pd_inwhcode and pi_id in
+    <foreach collection="list" item="item" open="(" close=")" separator=",">
+      #{item.id}
+    </foreach>
+  </select>
 
     <select id="post" parameterMap="postParamMap" statementType="CALLABLE">
         CALL SP_COMMITPRODINOUT(?, ?, ?, ?, ?)