luobang il y a 2 ans
Parent
commit
f6bb15bac2

+ 9 - 9
src/main/java/com/steerinfo/dil/controller/WSFaceController.java

@@ -69,16 +69,16 @@ public class WSFaceController extends BaseRESTfulController {
     public Map<String,Object> pushSaleOrderToEas(@RequestBody Map<String,Object> map) {
 //        Map<String, Object> totalMap = saleUtil.getTotalMap();
 //        totalMap.put("input",map);
-        //正式服务器
-        com.steerinfo.dil.wsdl.ServiceInfo service = new ServiceInfo("user", "dgjt@kingdee", "eas", "FDDGEAS85", "L2", 1);
-        WSFaceFacadeSrvProxyServiceLocator locator = new WSFaceFacadeSrvProxyServiceLocator();
-        service.setServername("172.16.33.111" , "8888");
-        WSContext wsContext = LoginUtil.doEASLogin(service);
+//        //正式服务器
+//        com.steerinfo.dil.wsdl.ServiceInfo service = new ServiceInfo("user", "dgjt@kingdee", "eas", "FDDGEAS85", "L2", 1);
+//        WSFaceFacadeSrvProxyServiceLocator locator = new WSFaceFacadeSrvProxyServiceLocator();
+//        service.setServername("172.16.33.111" , "8888");
+//        WSContext wsContext = LoginUtil.doEASLogin(service);
 //        //测试服务器
-//        DeleteServiceInfo service = new DeleteServiceInfo("user", "dgjt@kingdee", "eas", "A004", "L2", 1);
-//        DeleteWSFaceFacadeSrvProxyServiceLocator locator = new DeleteWSFaceFacadeSrvProxyServiceLocator();
-//        service.setServername("172.16.62.243" , "8888");
-//        WSContext wsContext = LoginTestUtil.doEASLogin(service);
+        DeleteServiceInfo service = new DeleteServiceInfo("user", "dgjt@kingdee", "eas", "A004", "L2", 1);
+        DeleteWSFaceFacadeSrvProxyServiceLocator locator = new DeleteWSFaceFacadeSrvProxyServiceLocator();
+        service.setServername("172.16.62.243" , "8888");
+        WSContext wsContext = LoginTestUtil.doEASLogin(service);
         String sessionId = wsContext.getSessionId();
         String output = null;
         Map<String , Object> resultMap = new HashMap<>();

+ 6 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.java

@@ -28,4 +28,10 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
 
     List<String> getMaterialEasList(String saleNumber);
 
+    int deleteSaleMaterialByEasId(String easId);
+
+    BigDecimal getSaleMaterialIdByEasId(String easId);
+
+    int deleteAstmBystId(BigDecimal stId);
+
 }

+ 1 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMapper.java

@@ -50,5 +50,6 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
     BigDecimal selectAreadyUse(String saleNumber);
 
 
+    int uncloseOrderNotIn(BigDecimal saleOrderId);
 
 }

+ 41 - 4
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -8,6 +8,7 @@ import com.steerinfo.dil.model.*;
 import com.steerinfo.dil.service.IAmsSaleOrderService;
 import com.steerinfo.dil.util.DataChange;
 import com.steerinfo.dil.util.MyException;
+import org.apache.ibatis.executor.loader.ResultLoader;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -112,6 +113,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     @Transactional
     @Override
     public int operationSaleOrder(Map<String, Object> mapVal) {
+        System.out.println(mapVal);
         int result = 0;
         // 审批状态
         String orderStatus = (String) mapVal.get("orderStatus");
@@ -146,6 +148,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
                 }
             }
+            //如果是钢材订单
+            if(amsSaleOrder.getSaleType().intValue() == 1){
+                //获取该钢材销售订单下所有的运输订单ID,状态
+                result += amsSaleOrderMapper.closeOrderNotIn(amsSaleOrder.getSaleOrderId());
+
+            }
         }
         // 关闭单个分录订单
         if (closeStatus.equals("-1") && wholeOrder.equals("0")) {
@@ -194,6 +202,8 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             amsSaleOrder.setSaleOrderStatus(new BigDecimal(4));
             amsSaleOrder.setDeleted(new BigDecimal(0));
             result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
+            // 如果是财务审批后,将不可作业的运输订单改为已接收状态
+            result += amsSaleOrderMapper.updateTruckOrderStatus(amsSaleOrder.getSaleOrderId());
         }
         if (orderStatus.equals("2") && closeStatus.equals("1")){
             // 得到账户余额
@@ -356,10 +366,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 amsSaleOrder.setUpdateTime(new Date());
                 amsSaleOrder.setShipperId(shipperId);
                 amsSaleOrder.setReceiveId(receiveId);
-                // 如果是财务审批后,将不可作业的运输订单改为已接收状态
-                if (orderStatus.equals("4")) {
-                    result += amsSaleOrderMapper.updateTruckOrderStatus(amsSaleOrder.getSaleOrderId());
-                }
                 if (isSelfMention != null) {
                     if (isSelfMention.equals("CARRY")) {
                         amsSaleOrder.setSaleOrderIsselfMention("是");
@@ -371,7 +377,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     amsSaleOrder.setSaleHistoricalOrderAmount(new BigDecimal(saleHistoricalOrderAmount));
                 }
                 amsSaleOrder.setSaleOrderStatus(new BigDecimal(orderStatus));
+                //获取销售订单下的分录id
+                List<String> wuliuEasIds = amsSaleMaterialMapper.getMaterialEasList(saleNumber);
                 //查询该销售订单下的所有物资分录
+                List<String> EasIds = new ArrayList<>();
                 for (Map<String, Object> materialMap : mapList) {
                     // 得到中间表主键id
                     String saleMaterialId = (String) materialMap.get("saleMaterialId");
@@ -379,6 +388,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     String easPrimaryId = (String) materialMap.get("easPrimaryId");
                     Map<String,Object> resultMap = new HashMap<>();
                     resultMap.put("easPrimaryId",easPrimaryId);
+                    EasIds.add(easPrimaryId);
                     AmsSaleMaterial amsSaleMaterial;
                     // 得到物资重量
                     String materialWeight = (String) materialMap.get("materialNumber");
@@ -433,6 +443,33 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     amsSaleMaterial.setInsertTime(new Date());
                     result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
                 }
+                if(EasIds.size() < wuliuEasIds.size()){
+                    //只有当金蝶传过来的分录小于物流这边的金蝶分录时,才进行此处判断
+                    //遍历物流存在的数组,如果wuliu有的金蝶没有,那就将物流没有的给隐藏调
+                    //将物流这边的金蝶分录集合变成set
+                    Set<String> set = new HashSet<String>(wuliuEasIds);
+                    //遍历金蝶分录数组
+                    for(String easId:EasIds){
+                            // 若是集合里有相同的就删掉,若是没有就将值添加到集合
+                            if (set.contains(easId))
+                            {
+                                set.remove(easId);
+                            } else
+                            {
+                                set.add(easId);
+                            }
+                    }
+                    List<String> chaEasIds = new ArrayList<>(set);
+                    //遍历数组将这里面的分录删掉
+                    for (String easId:chaEasIds){
+                        //物理删除该分录
+                        BigDecimal stId = amsSaleMaterialMapper.getSaleMaterialIdByEasId(easId);
+                        result += amsSaleMaterialMapper.deleteSaleMaterialByEasId(easId);
+                        result += amsSaleMaterialMapper.deleteAstmBystId(stId);
+
+                    }
+                    System.out.println(chaEasIds);
+                }
                 result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
             }
         }

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

@@ -10,7 +10,7 @@ spring:
 
 openfeign:
   OmsFeign:
-    url: ${OMSFEIGN_URL:localhost:8016}
+    url: ${OMSFEIGN_URL:172.16.33.166:8016}
   imFeign:
     url: ${IMFEIGN_URL:172.16.33.166:8055}
   TmsTruckFeign:

+ 12 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.xml

@@ -697,6 +697,10 @@
         ON ASM.SALE_ORDER_ID = ASO.SALE_ORDER_ID
         WHERE ASO.SALE_NUMBER = #{saleNumber}
     </select>
+    <select id="getSaleMaterialIdByEasId" resultType="java.math.BigDecimal" parameterType="string">
+        SELECT ASM.SALE_MATERIAL_ID FROM AMS_SALE_MATERIAL ASM
+        WHERE ASM.EAS_PRIMARY_ID = #{easId}
+    </select>
 
 
     <update id="openAllSaleMaterial" parameterType="DECIMAL" >
@@ -716,5 +720,13 @@
         SET ASM.DELETED = NULL
         WHERE ASM.SALE_MATERIAL_ID = #{saleMaterialId}
     </update>
+    <delete id="deleteSaleMaterialByEasId" parameterType="string">
+        DELETE FROM AMS_SALE_MATERIAL ASM
+        WHERE ASM.EAS_PRIMARY_ID = #{easId}
+    </delete>
+    <delete id="deleteAstmBystId" parameterType="decimal">
+        DELETE FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+        WHERE ASTM.MATERIAL_ID = #{stId}
+    </delete>
 
 </mapper>

+ 3 - 1
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -921,7 +921,8 @@
   <!-- 关闭未进厂的运单 -->
   <update id="closeOrderNotIn" parameterType="DECIMAL" >
     UPDATE OMSTRUCK_ORDER OO
-    SET OO.ORDER_STATUS = 7
+    SET OO.ORDER_STATUS = 7,
+        OO.INSERT_UPDATE_REMARK = '金蝶关闭销售订单,物流同步关闭'
     WHERE OO.ORDER_ID IN (
       SELECT OO.ORDER_ID "orderId"
       FROM AMS_SALE_ORDER_MATERIAL ASOM
@@ -1065,4 +1066,5 @@
   </update>
 
 
+
 </mapper>

+ 1 - 0
src/main/resources/com/steerinfo/dil/mapper/OmstruckOrderMapper.xml

@@ -850,5 +850,6 @@
         ON RC.CAPACITY_ID = OO.CAPACITY_ID
         WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
           AND OO.ORDER_TYPE = 1
+        and ASM.SALE_MATERIAL_ID IS NOT NULL
     </select>
 </mapper>