Browse Source

供应商资料修改-供应商期初

dingyl 6 years ago
parent
commit
5d86131d88

+ 3 - 1
applications/commons/commons-api/src/main/java/com/usoftchina/saas/commons/api/ConfigsApi.java

@@ -6,6 +6,7 @@ import com.usoftchina.saas.commons.po.Configs;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -14,5 +15,6 @@ public interface ConfigsApi {
 
     @GetMapping("/configs/list/{companyId}")
     Result<List<Configs>> getConfigsByCompanyId(@PathVariable("companyId") Long companyId);
-
+    @GetMapping("/configs/getConfigDataBycode")
+    String getConfigDataBycode(@RequestParam("code") String code);
 }

+ 4 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/ConfigsController.java

@@ -51,4 +51,8 @@ public class ConfigsController {
         configsService.update(data);
         return Result.success();
     }
+    @GetMapping("/getConfigDataBycode")
+    public String getConfigDataBycode(String code){
+        return configsService.getConfigDataBycode(code);
+    }
 }

+ 2 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/ConfigsMapper.java

@@ -25,4 +25,6 @@ public interface ConfigsMapper {
     void updateByCodeSelective(Configs con);
 
     int selectByCodeAndCompanyId(@Param("code") String code, @Param("companyId") Long companyId);
+
+    String getConfigDataBycode(@Param("code") String code, @Param("companyId") Long companyId);
 }

+ 12 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ConfigsServiceImpl.java

@@ -60,6 +60,18 @@ public class ConfigsServiceImpl implements ConfigsService{
         return configsMapper.selectByCondition(null, companyId);
     }
 
+    @Override
+    public String getConfigDataBycode(String code) {
+        if (StringUtils.isEmpty(code)) {
+            return null;
+        }
+        String data = configsMapper.getConfigDataBycode(code, BaseContextHolder.getCompanyId());
+        if (null != data ) {
+            return data;
+        }
+        return null;
+    }
+
     @Override
     public Configs getConfigByCode(String code) {
         if (StringUtils.isEmpty(code)) {

+ 3 - 0
applications/commons/commons-server/src/main/resources/mapper/ConfigsMapper.xml

@@ -184,4 +184,7 @@
     SELECT COUNT(*) FROM CONFIGS WHERE CODE = #{code} AND COMPANYID = #{companyId}
   </select>
 
+  <select id="getConfigDataBycode" resultType="String">
+    SELECT data FROM CONFIGS WHERE CODE = #{code} AND COMPANYID = #{companyId}
+  </select>
 </mapper>

+ 4 - 1
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java

@@ -24,7 +24,6 @@ public interface SubledgerMapper {
     int updateByPrimaryKey(Subledger record);
 
     List<Subledger> selectSubledgerBycondition(@Param("con") String con, @Param("companyId") Long companyId);
-
     Long selectByKindCodeCustid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
                                      @Param("sl_custid") Integer sl_custid ,@Param("companyid") Long companyid,@Param("sl_ym") String sl_ym);
 
@@ -38,4 +37,8 @@ public interface SubledgerMapper {
                         @Param("sl_vendid") Integer sl_vendid);
 
     String selectUnPeriod(@Param("companyId") Long companyId);
+    //获取当前期间
+    String selectThisPeriod(@Param("companyId") Long companyId);
+
+    Long selectIdBycondition(@Param("con") String con, @Param("companyId") Long companyId);
 }

+ 36 - 2
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendApamountServiceImpl.java

@@ -21,6 +21,7 @@ import com.usoftchina.saas.document.mapper.*;
 import com.usoftchina.saas.document.service.VendApamountService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.utils.DateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -48,7 +49,8 @@ public class VendApamountServiceImpl extends CommonBaseServiceImpl<VendApamountM
     private DataImportMapper dataImportMapper;
     @Autowired
     private CompanyApi companyApi;
-
+    @Autowired
+    private SubledgerMapper subledgerMapper;
     private static final Logger LOGGER = LoggerFactory.getLogger(VendApamountServiceImpl.class);
 
     public PageInfo<VendApamountList> getListDataByCondition(PageRequest page, ListReqDTO listReqDTO){
@@ -167,10 +169,42 @@ public class VendApamountServiceImpl extends CommonBaseServiceImpl<VendApamountM
         }
         //调用更新
         vendorMapper.updateVendleftamountByPrimaryKey(vendApamount.getVa_vendid());
+        updateSubledger(vendApamount);
         return docBaseDTO;
     }
 
-
+    private  void updateSubledger(VendApamount vendApamount){
+        //中间表subledger处理
+        Subledger subledger = new Subledger();
+        subledger.setSl_code("期初余额");
+        subledger.setSl_kind("期初余额");
+        subledger.setSl_vendid(Math.toIntExact(vendApamount.getVa_vendid()));
+        subledger.setSl_custid(0);
+        subledger.setCompanyId(BaseContextHolder.getCompanyId());
+        subledger.setSl_date(vendApamount.getVa_begindate());
+        subledger.setSl_ym(DateUtils.getYm(vendApamount.getVa_begindate()));
+        subledger.setSl_currency(vendApamount.getVa_currency());
+        if(vendApamount.getVa_beginapamount()>vendApamount.getVa_beginprepayamount()){
+            subledger.setSl_preamount(new Double(0));
+            subledger.setSl_amount(Math.abs(vendApamount.getVa_beginapamount()-vendApamount.getVa_beginprepayamount()));
+        }else{
+            subledger.setSl_amount(new Double(0));
+            subledger.setSl_preamount(Math.abs(vendApamount.getVa_beginapamount()-vendApamount.getVa_beginprepayamount()));
+        }
+        subledger.setSl_orderamount(Math.abs(vendApamount.getVa_beginapamount()-vendApamount.getVa_beginprepayamount()));
+        subledger.setSl_namount(Math.abs(vendApamount.getVa_beginapamount()-vendApamount.getVa_beginprepayamount()));
+        subledger.setCreateTime(new Date());
+        subledger.setCreatorId(BaseContextHolder.getUserId());
+        subledger.setCreatorName(BaseContextHolder.getUserName());
+        String con="sl_kind='期初余额' and sl_vendid="+Math.toIntExact(vendApamount.getVa_vendid())+" and sl_currency='"+vendApamount.getVa_currency()+"'";
+        Long sl_id = subledgerMapper.selectIdBycondition(con,BaseContextHolder.getCompanyId());
+        subledger.setId(sl_id);
+        if ( sl_id!=null && sl_id > 0 ) {
+            subledgerMapper.updateByPrimaryKeySelective(subledger);
+        }else {
+            subledgerMapper.insertSelective(subledger);
+        }
+    };
     private boolean hasData(String vendCode, String currency,Long id){
         int hasVendCode = getMapper().hasVendCode(vendCode, BaseContextHolder.getCompanyId());
         if (hasVendCode == 0){

+ 27 - 37
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java

@@ -7,8 +7,10 @@ import com.usoftchina.saas.account.api.CompanyApi;
 import com.usoftchina.saas.account.dto.CompanyDTO;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.api.ConfigsApi;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
+import com.usoftchina.saas.commons.cache.ConfigsCache;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -25,6 +27,7 @@ import com.usoftchina.saas.document.mapper.DataImportMapper;
 import com.usoftchina.saas.document.mapper.SubledgerMapper;
 import com.usoftchina.saas.document.mapper.VendorMapper;
 import com.usoftchina.saas.document.mapper.VendorcontactMapper;
+import com.usoftchina.saas.document.service.VendApamountService;
 import com.usoftchina.saas.document.service.VendorService;
 import com.usoftchina.saas.document.service.VendorkindService;
 import com.usoftchina.saas.exception.BizException;
@@ -69,6 +72,10 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
     private VendorkindService vendorkindService;
     @Autowired
     private CompanyApi companyApi;
+    @Autowired
+    private ConfigsApi configsApi;
+    @Autowired
+    private  VendApamountService vendApamountService;
     @Value("${b2b.baseUrl.common}")
     private String b2bUrl;
 
@@ -153,28 +160,11 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         main.setCompanyId(BaseContextHolder.getCompanyId());
         List<Vendorcontact> items = vendorListDTO.getItems();
         String ve_code = main.getVe_code().trim().toUpperCase();
-
-        //获取已结账的期间
-        String YM = subledgerMapper.selectUnPeriod(companyId);
-        if(YM==null || YM.equals("")){
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
-            YM = simpleDateFormat.format(main.getVe_begindate());
-        }else{
-            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM");
-            String beginDate = simpleDateFormat.format(main.getVe_begindate());
-            if(Integer.valueOf(YM)>Integer.valueOf(beginDate)){
-                int code = BizExceptionCode.LIMIT_PERIOD_VENDOR.getCode();
-                String mes = String.format(BizExceptionCode.LIMIT_PERIOD_VENDOR.getMessage(),YM);
-                throw new BizException(code , mes);
-            }
-            YM = beginDate;
-        }
         ve_code = RegexpUtils.replaceSpecCharacter(ve_code);
         if (vendorListDTO.isCodeModified()) {
             ve_code = pushMaxnubmer(ve_code, main.getId());
         }
-        //String code = pushMaxnubmer(ve_code, main.getId());
-        if(main.getId() == 0){
+        if(main.getId() == 0){//保存
             int count = getMapper().getCountByCode(ve_code, companyId);
             if(count > 0){
                 throw new BizException(BizExceptionCode.REPEAT_CODE);
@@ -185,12 +175,6 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             }
             //保存主表信息
             main.setVe_code(ve_code);
-            //更新应付款余额
-            Double beginapamount = main.getVe_beginapamount()==null ? new Double(0):main.getVe_beginapamount();
-            Double beginprepayamount = main.getVe_beginprepayamount()==null ? new Double(0):main.getVe_beginprepayamount();
-            Double payamount = main.getVe_payamount()==null? new Double(0):main.getVe_payamount();
-            Double preamount = main.getVe_preamount()==null? new Double(0):main.getVe_preamount();
-            main.setVe_leftamount(beginapamount-beginprepayamount+payamount-preamount);
             //更新录入人录入时间ID
             main.setCreatorId(BaseContextHolder.getUserId());
             getMapper().insertSelective(main);
@@ -207,6 +191,20 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             if (items.size() > 0){
                 vendorcontactMapper.batchInsert(items);
             }
+            if( 1==2 ){//单一币别更新应付款余额
+                Double beginapamount = main.getVe_beginapamount()==null ? new Double(0):main.getVe_beginapamount();
+                Double beginprepayamount = main.getVe_beginprepayamount()==null ? new Double(0):main.getVe_beginprepayamount();
+                if(beginapamount>0 || beginprepayamount>0){
+                    VendApamount vendApamount=new VendApamount();
+                    vendApamount.setId(new Long(0));
+                    vendApamount.setVa_beginapamount(beginapamount);
+                    vendApamount.setVa_beginprepayamount(beginprepayamount);
+                    vendApamount.setVa_currency(configsApi.getConfigDataBycode("defaultCurrency"));
+                    vendApamount.setVa_vendid(main.getId());
+                    vendApamount.setVa_vendcode(main.getVe_code());
+                    vendApamountService.saveData(vendApamount);
+                }
+            }
             //记录LOG
             messageLogService.save(generateMsgObj(mainId, ve_code));
         }else{
@@ -255,7 +253,8 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                 //期初预收
                 main.setVe_beginprepayamount(vendortpl.getVe_beginprepayamount());
             }
-
+            if( 1==2 ){//单一币别更新应付款余额
+            }
             //启用B2B对账
             if (StringUtils.isEmpty(oldVendor.getVe_uu()) && !StringUtils.isEmpty(main.getVe_uu())){
                 try {
@@ -264,7 +263,6 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
                     LOGGER.info("请求B2B对账启用接口失败!, time={}", DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
                 }
             }
-
             getMapper().updateByPrimaryKeySelective(main);
             if (items.size() > 0) {
                 List<Vendorcontact> updateItems = new ArrayList<Vendorcontact>();
@@ -293,15 +291,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             //记录LOG
             messageLogService.update(generateMsgObj(main.getId(), ve_code));
         }
-
-        //更新应收款余额
-        Double ve_leftamount = (main.getVe_beginapamount() == null ? new Double(0) : main.getVe_beginapamount())
-                - (main.getVe_beginprepayamount() == null ? new Double(0) : main.getVe_beginprepayamount())
-                + (main.getVe_payamount() == null ? new Double(0) : main.getVe_payamount())
-                - (main.getVe_preamount() == null ? new Double(0) : main.getVe_preamount());
-        main.setVe_leftamount(ve_leftamount);
-        getMapper().updateByPrimaryKeySelective(main);
-
+/*
         //插入中间表
         Double amount = (main.getVe_beginapamount() == null ? new Double(0) : main.getVe_beginapamount())
                 - (main.getVe_beginprepayamount() == null ? new Double(0) : main.getVe_beginprepayamount());
@@ -329,7 +319,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         subledger.setCreatorId(BaseContextHolder.getUserId());
         subledger.setCreatorName(BaseContextHolder.getUserName());
         Long sl_id = subledgerMapper.selectByKindCodeVendid("期初余额","期初余额",
-                Math.toIntExact(main.getId()),BaseContextHolder.getCompanyId(),YM);
+                Math.toIntExact(main.getId()),BaseContextHolder.getCompanyId(),"");
 
         subledger.setId(sl_id);
         if ( sl_id!=null && sl_id > 0 ) {
@@ -337,7 +327,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
         }else {
             subledgerMapper.insertSelective(subledger);
         }
-
+*/
         return generateMsgObj(main.getId(), ve_code);
     }
 

+ 19 - 1
applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml

@@ -309,5 +309,23 @@
 
   <select id="selectUnPeriod" resultType="string">
         select PD_DETNO from periodsdetail where companyid=#{companyId} and pd_status=99 order by PD_DETNO desc LIMIT 1;
-    </select>
+  </select>
+
+  <select id="selectThisPeriod" resultType="string">
+      select PD_DETNO from periodsdetail where companyid=#{companyId} and pd_status=0 order by PD_DETNO  LIMIT 1;
+  </select>
+
+  <select id="selectIdBycondition" resultType="java.lang.Long">
+  select
+  ifnull(sl_id,0)
+  from subledger
+  <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and   subledger.companyId = #{companyId}
+      </if>
+    </where>
+  </select>
 </mapper>

+ 2 - 2
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java

@@ -535,7 +535,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
             baseDTO.setId(id);
             baseDTO.setCode(verification.getVc_code());
             baseDTO.setName(BillCodeSeq.VERIFICATION.getName());
-            verificationdetMapper.deleteByParentPrimaryKey(Long.valueOf(String.valueOf(id)));
+            verificationdetMapper.deleteByPrimaryKey(Integer.valueOf(String.valueOf(id)));
             //日志
             messageLogService.deleteDetail(baseDTO);
         }
@@ -546,7 +546,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         if (null != id) {
             Verificationdetail verificationdetail = verificationdetailMapper.selectByPrimaryKey(Integer.valueOf(String.valueOf(id)));
             Verification verification = verificationMapper.selectByPrimaryKey(verificationdetail.getVcd_vcid().intValue());
-            verificationdetailMapper.deleteByParentPrimaryKey(id);
+            verificationdetailMapper.deleteByPrimaryKey(Integer.valueOf(String.valueOf(id)));
             DocBaseDTO baseDTO = new DocBaseDTO();
             baseDTO.setId(id);
             baseDTO.setCode(verification.getVc_code());

+ 1 - 1
applications/money/money-server/src/main/resources/mapper/VerificationdetMapper.xml

@@ -473,7 +473,7 @@
   </update>
   <delete id="deleteByParentPrimaryKey" parameterType="java.lang.Long" >
     delete from verificationdet
-    where vd_id = #{vd_vcid,jdbcType=INTEGER}
+    where vd_vcid = #{vd_vcid,jdbcType=INTEGER}
   </delete>
   <sql id="subledger_Column_List" >
     sl_yamount,sl_namount

+ 1 - 1
applications/money/money-server/src/main/resources/mapper/VerificationdetailMapper.xml

@@ -472,7 +472,7 @@
   </update>
   <delete id="deleteByParentPrimaryKey" parameterType="java.lang.Long" >
     delete from verificationdetail
-    where vcd_id = #{vcd_vcid,jdbcType=INTEGER}
+    where vcd_vcid = #{vcd_vcid,jdbcType=INTEGER}
   </delete>
   <sql id="subledger_Column_List" >
     sl_yamount,sl_namount