Browse Source

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	frontend/saas-web/app/view/document/customer/BasePanel.js
huangx 7 years ago
parent
commit
4e0385d4b5
50 changed files with 1557 additions and 156 deletions
  1. 195 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Banksubledger.java
  2. 141 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Subledger.java
  3. 1 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java
  4. 33 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BanksubledgerMapper.java
  5. 33 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java
  6. 80 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  7. 82 8
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  8. 5 0
      applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml
  9. 345 0
      applications/document/document-server/src/main/resources/mapper/BanksubledgerMapper.xml
  10. 263 0
      applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml
  11. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/FundtransferMapper.java
  12. 4 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/OthreceiptsMapper.java
  13. 3 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/OthspendingsMapper.java
  14. 1 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/PaybalanceMapper.java
  15. 1 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/RecbalanceMapper.java
  16. 32 3
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  17. 32 6
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  18. 32 4
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  19. 34 4
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  20. 33 4
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  21. 7 0
      applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml
  22. 7 0
      applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml
  23. 7 0
      applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml
  24. 6 0
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  25. 7 0
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  26. 4 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java
  27. 36 29
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  28. 2 2
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  29. 2 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SalerecView.java
  30. 3 0
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/ProdInOutService.java
  31. 19 10
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  32. 7 3
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  33. 1 0
      applications/sale/sale-server/src/main/resources/mapper/SalerecViewMapper.xml
  34. 1 0
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/report/ProdiodetailView.java
  35. 3 2
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java
  36. 1 0
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml
  37. 1 1
      base-servers/mail/mail-api/src/main/java/com/usoftchina/saas/mail/MailBuilder.java
  38. 4 0
      base-servers/mail/mail-server/pom.xml
  39. 1 1
      base-servers/mail/mail-server/src/main/java/com/usoftchina/saas/mail/MailApplication.java
  40. 2 0
      frontend/saas-web/app/view/core/form/FormPanel.js
  41. 13 24
      frontend/saas-web/app/view/document/customer/BasePanel.js
  42. 2 2
      frontend/saas-web/app/view/document/product/BasePanel.js
  43. 7 7
      frontend/saas-web/app/view/document/vendor/BasePanel.js
  44. 6 0
      frontend/saas-web/app/view/home/InfoCard.scss
  45. 3 17
      frontend/saas-web/app/view/main/Main.js
  46. 2 0
      frontend/saas-web/app/view/main/Navigation.js
  47. 32 23
      frontend/saas-web/app/view/stock/appropriationInOut/FormPanelController.js
  48. 2 2
      frontend/saas-web/app/view/stock/make/FormPanel.js
  49. 12 0
      frontend/saas-web/app/view/sys/config/FormPanel.js
  50. 4 0
      frontend/saas-web/overrides/i18n.js

+ 195 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Banksubledger.java

@@ -0,0 +1,195 @@
+package com.usoftchina.saas.document.entities;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author hx
+ * @createtime 2018-10-19 15:58
+ */
+@Data
+public class Banksubledger extends CommonBaseEntity implements Serializable {
+    private Integer bl_id;  //ID
+
+    private Integer bl_ym;  //期间
+
+    private Integer bl_bankid;  //账户ID
+
+    private String bl_bankcode; //账户编号
+
+    private String bl_bankname;  //账户名称
+
+    private String bl_code;     //单据编号
+ 
+    private String bl_kind;     //单据类型
+
+    private Date bl_date;      //单据日期
+
+    private String bl_asstype;   //往来类型
+
+    private String bl_asscode;    //往来单位编号
+
+    private String bl_assname;    //往来单位名称
+
+    private Double bl_income;    //收入
+
+    private Double bl_spending;   //支出
+
+    private String bl_manname;    //收/付款人
+ 
+    private String bl_remark;    //备注
+
+    private Double bl_orderamount;
+
+    private Integer bl_assid;
+
+    private String bl_item;
+
+    public Double getBl_orderamount() {
+        return bl_orderamount;
+    }
+
+    public void setBl_orderamount(Double bl_orderamount) {
+        this.bl_orderamount = bl_orderamount;
+    }
+
+    public Integer getBl_assid() {
+        return bl_assid;
+    }
+
+    public void setBl_assid(Integer bl_assid) {
+        this.bl_assid = bl_assid;
+    }
+
+    public String getBl_item() {
+        return bl_item;
+    }
+
+    public void setBl_item(String bl_item) {
+        this.bl_item = bl_item;
+    }
+
+    public Integer getBl_id() {
+        return bl_id;
+    }
+
+    public void setBl_id(Integer bl_id) {
+        this.bl_id = bl_id;
+    }
+
+    public Integer getBl_ym() {
+        return bl_ym;
+    }
+
+    public void setBl_ym(Integer bl_ym) {
+        this.bl_ym = bl_ym;
+    }
+
+    public Integer getBl_bankid() {
+        return bl_bankid;
+    }
+
+    public void setBl_bankid(Integer bl_bankid) {
+        this.bl_bankid = bl_bankid;
+    }
+
+    public String getBl_bankcode() {
+        return bl_bankcode;
+    }
+
+    public void setBl_bankcode(String bl_bankcode) {
+        this.bl_bankcode = bl_bankcode == null ? null : bl_bankcode.trim();
+    }
+
+    public String getBl_bankname() {
+        return bl_bankname;
+    }
+
+    public void setBl_bankname(String bl_bankname) {
+        this.bl_bankname = bl_bankname == null ? null : bl_bankname.trim();
+    }
+
+    public String getBl_code() {
+        return bl_code;
+    }
+
+    public void setBl_code(String bl_code) {
+        this.bl_code = bl_code == null ? null : bl_code.trim();
+    }
+
+    public String getBl_kind() {
+        return bl_kind;
+    }
+
+    public void setBl_kind(String bl_kind) {
+        this.bl_kind = bl_kind == null ? null : bl_kind.trim();
+    }
+
+    public Date getBl_date() {
+        return bl_date;
+    }
+
+    public void setBl_date(Date bl_date) {
+        this.bl_date = bl_date;
+    }
+
+    public String getBl_asstype() {
+        return bl_asstype;
+    }
+
+    public void setBl_asstype(String bl_asstype) {
+        this.bl_asstype = bl_asstype == null ? null : bl_asstype.trim();
+    }
+
+    public String getBl_asscode() {
+        return bl_asscode;
+    }
+
+    public void setBl_asscode(String bl_asscode) {
+        this.bl_asscode = bl_asscode == null ? null : bl_asscode.trim();
+    }
+
+    public String getBl_assname() {
+        return bl_assname;
+    }
+
+    public void setBl_assname(String bl_assname) {
+        this.bl_assname = bl_assname == null ? null : bl_assname.trim();
+    }
+
+    public Double getBl_income() {
+        return bl_income;
+    }
+
+    public void setBl_income(Double bl_income) {
+        this.bl_income = bl_income;
+    }
+
+    public Double getBl_spending() {
+        return bl_spending;
+    }
+
+    public void setBl_spending(Double bl_spending) {
+        this.bl_spending = bl_spending;
+    }
+
+    public String getBl_manname() {
+        return bl_manname;
+    }
+
+    public void setBl_manname(String bl_manname) {
+        this.bl_manname = bl_manname == null ? null : bl_manname.trim();
+    }
+
+    public String getBl_remark() {
+        return bl_remark;
+    }
+
+    public void setBl_remark(String bl_remark) {
+        this.bl_remark = bl_remark == null ? null : bl_remark.trim();
+    }
+
+}

+ 141 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Subledger.java

@@ -0,0 +1,141 @@
+package com.usoftchina.saas.document.entities;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+//中间表
+public class Subledger extends CommonBaseEntity implements Serializable {
+
+    private String sl_code;
+
+    private String sl_kind;
+
+    private Integer sl_custid;
+
+    private Integer sl_vendid;
+
+    private Date sl_date;
+
+    private Double sl_amount;
+
+    private Double sl_preamount;
+
+    private Double sl_yamount;
+
+    private Double sl_namount;
+
+    private String sl_remark;
+
+    private Double sl_orderamount;
+
+    private Double sl_discount;
+
+    private Integer sl_ym;
+
+    public String getSl_code() {
+        return sl_code;
+    }
+
+    public void setSl_code(String sl_code) {
+        this.sl_code = sl_code;
+    }
+
+    public String getSl_kind() {
+        return sl_kind;
+    }
+
+    public void setSl_kind(String sl_kind) {
+        this.sl_kind = sl_kind;
+    }
+
+    public Integer getSl_custid() {
+        return sl_custid;
+    }
+
+    public void setSl_custid(Integer sl_custid) {
+        this.sl_custid = sl_custid;
+    }
+
+    public Integer getSl_vendid() {
+        return sl_vendid;
+    }
+
+    public void setSl_vendid(Integer sl_vendid) {
+        this.sl_vendid = sl_vendid;
+    }
+
+    public Date getSl_date() {
+        return sl_date;
+    }
+
+    public void setSl_date(Date sl_date) {
+        this.sl_date = sl_date;
+    }
+
+    public Double getSl_amount() {
+        return sl_amount;
+    }
+
+    public void setSl_amount(Double sl_amount) {
+        this.sl_amount = sl_amount;
+    }
+
+    public Double getSl_preamount() {
+        return sl_preamount;
+    }
+
+    public void setSl_preamount(Double sl_preamount) {
+        this.sl_preamount = sl_preamount;
+    }
+
+    public Double getSl_yamount() {
+        return sl_yamount;
+    }
+
+    public void setSl_yamount(Double sl_yamount) {
+        this.sl_yamount = sl_yamount;
+    }
+
+    public Double getSl_namount() {
+        return sl_namount;
+    }
+
+    public void setSl_namount(Double sl_namount) {
+        this.sl_namount = sl_namount;
+    }
+
+    public String getSl_remark() {
+        return sl_remark;
+    }
+
+    public void setSl_remark(String sl_remark) {
+        this.sl_remark = sl_remark;
+    }
+
+
+    public Double getSl_orderamount() {
+        return sl_orderamount;
+    }
+
+    public void setSl_orderamount(Double sl_orderamount) {
+        this.sl_orderamount = sl_orderamount;
+    }
+
+    public Double getSl_discount() {
+        return sl_discount;
+    }
+
+    public void setSl_discount(Double sl_discount) {
+        this.sl_discount = sl_discount;
+    }
+
+    public Integer getSl_ym() {
+        return sl_ym;
+    }
+
+    public void setSl_ym(Integer sl_ym) {
+        this.sl_ym = sl_ym;
+    }
+}

+ 1 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BankinformationMapper.java

@@ -23,5 +23,6 @@ public interface BankinformationMapper extends CommonBaseMapper<Bankinformation>
     List<Bankinformation> selectBankinformationBycondition(@Param("con") String con, @Param("companyId") Long companyId);
 
     List<ComboDTO> getCombo(@Param("companyId") Long companyId);
+    String selectBankcode(String bk_bankcode);
 
 }

+ 33 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/BanksubledgerMapper.java

@@ -0,0 +1,33 @@
+package com.usoftchina.saas.document.mapper;
+
+
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
+import com.usoftchina.saas.document.entities.Banksubledger;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author hx
+ * @createtime 2018-10-19 15:57
+ */
+public interface BanksubledgerMapper extends CommonBaseMapper<Banksubledger> {
+
+    int deleteByPrimaryKey(@Param("code") String code, @Param("kind") String kind);
+    void deleteByBankid(Integer bk_id);
+
+//    Long insert(Banksubledger record);
+
+    int insertSelective(Banksubledger record);
+    List<String> selectCode(String code);
+
+    Banksubledger selectByPrimaryKey(Integer bl_id);
+
+    int updateByPrimaryKeySelective(Banksubledger record);
+
+    int updateByPrimaryKey(Banksubledger record);
+
+    int updateBankcode(@Param("bk_thisamount") Double bk_thisamount, @Param("nowbalance") Double nowbalance,
+                       @Param("bankcode") String bankcode, @Param("symbol") String symbol);
+    Double selectThisamount(String bankcode);
+}

+ 33 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/SubledgerMapper.java

@@ -0,0 +1,33 @@
+package com.usoftchina.saas.document.mapper;
+
+import com.usoftchina.saas.document.entities.Subledger;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author heqw
+ * @date 2018/11/6 10:33
+ **/
+public interface SubledgerMapper {
+    int deleteByPrimaryKey(@Param("code") String code, @Param("kind") String kind);
+
+    int insert(Subledger record);
+
+    int insertSelective(Subledger record);
+
+    Subledger selectByPrimaryKey(Integer sl_id);
+    String selectCode(String code);
+
+    int updateByPrimaryKeySelective(Subledger record);
+
+    int updateByPrimaryKey(Subledger record);
+
+    List<Subledger> selectSubledgerBycondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    Subledger selectByKindCodeCustid(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
+                                     @Param("sl_custid") Integer sl_custid);
+
+    void deleteCustomer(@Param("sl_code") String sl_code, @Param("sl_kind") String sl_kind,
+                        @Param("sl_custid") Integer sl_custid);
+}

+ 80 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java

@@ -5,15 +5,23 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.dto.ComboDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.entities.Bankinformation;
+import com.usoftchina.saas.document.entities.Banksubledger;
 import com.usoftchina.saas.document.mapper.BankinformationMapper;
+import com.usoftchina.saas.document.mapper.BanksubledgerMapper;
 import com.usoftchina.saas.document.service.BankinformationService;
+import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,24 +32,63 @@ import java.util.List;
 public class BankinformationServiceImpl extends CommonBaseServiceImpl<BankinformationMapper, Bankinformation> implements BankinformationService {
     @Autowired
     private BankinformationMapper bankinformationMapper;
+    @Autowired
+    private BanksubledgerMapper banksubledgerMapper;
 
+    @Transactional
     @Override
     public boolean save(Bankinformation bankinformation){
         bankinformation.setCompanyId(BaseContextHolder.getCompanyId());
         if (bankinformation.getBk_thisamount() == null || bankinformation.getBk_thisamount() == 0){
             bankinformation.setBk_thisamount(bankinformation.getBk_beginamount());
         }
+
+        //判断编号
+        String bktion = bankinformationMapper.selectBankcode(bankinformation.getBk_bankcode());
+        if (bktion != null){
+            throw new BizException(500, BizExceptionCode.ACCOUNT_EXISTS.getMessage());
+        }
+
+        //中间表
+        Banksubledger banksubledger = new Banksubledger();
+        Date date = bankinformation.getBk_date();
+        String dateString = date2String(date, "yyyyMMdd");
+        int ym = Integer.parseInt(dateString);
+
+        String date1 = date2String(date, "yyyymm");
+        date1 = date1 + "01 00:00:00";
+        Date d = null;
+        try {
+            d = string2Date(date1, "yyyy-mm-dd hh:mm:ss");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        banksubledger.setCompanyId(BaseContextHolder.getCompanyId());
+        banksubledger.setBl_ym(ym);
+        banksubledger.setBl_bankid(Math.toIntExact(bankinformation.getId()));
+        banksubledger.setBl_bankcode(bankinformation.getBk_bankcode());
+        banksubledger.setBl_bankname(bankinformation.getBk_bankname());
+        banksubledger.setBl_code("期初余额");
+        banksubledger.setBl_kind("期初余额");
+        banksubledger.setBl_date(d);
+        banksubledger.setBl_orderamount(bankinformation.getBk_beginamount());
+
         if(bankinformation.getId() == 0){
             bankinformationMapper.insertSelective(bankinformation);
+            banksubledgerMapper.insertSelective(banksubledger);
         }else{
             bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
+            banksubledgerMapper.updateByPrimaryKeySelective(banksubledger);
         }
         return true;
     }
 
+    @Transactional
     @Override
     public boolean removeByPrimaryKey(int id){
         bankinformationMapper.deleteByPrimaryKey(id);
+        banksubledgerMapper.deleteByBankid(id);
         return true;
     }
 
@@ -78,4 +125,37 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
     public List<ComboDTO> getCombo() {
         return getMapper().getCombo(BaseContextHolder.getCompanyId());
     }
+
+
+    /**
+     * String转Date类型
+     *
+     * @param dateStr
+     *            时间字符串
+     * @return Date类型时间
+     * @throws Exception
+     *             异常
+     */
+    public static Date string2Date(String dateStr, String format) throws Exception {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        if (dateStr == null) {
+            return sdf.parse(dateStr);
+        }
+        return null;
+    }
+
+    /**
+     * Date转String
+     *
+     * @param date
+     *            Date类型时间
+     * @return 时间字符串
+     */
+    public static String date2String(Date date, String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        if (date != null) {
+            return sdf.format(date);
+        }
+        return null;
+    }
 }

+ 82 - 8
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java

@@ -16,14 +16,8 @@ import com.usoftchina.saas.document.dto.CustomerDTO;
 import com.usoftchina.saas.document.dto.CustomerFormDTO;
 import com.usoftchina.saas.document.dto.CustomeraddressDTO;
 import com.usoftchina.saas.document.dto.CustomercontactDTO;
-import com.usoftchina.saas.document.entities.Customer;
-import com.usoftchina.saas.document.entities.CustomerList;
-import com.usoftchina.saas.document.entities.Customeraddress;
-import com.usoftchina.saas.document.entities.Customercontact;
-import com.usoftchina.saas.document.mapper.CustomerListMapper;
-import com.usoftchina.saas.document.mapper.CustomerMapper;
-import com.usoftchina.saas.document.mapper.CustomeraddressMapper;
-import com.usoftchina.saas.document.mapper.CustomercontactMapper;
+import com.usoftchina.saas.document.entities.*;
+import com.usoftchina.saas.document.mapper.*;
 import com.usoftchina.saas.document.service.CustomerService;
 import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.page.PageRequest;
@@ -33,6 +27,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -58,6 +53,8 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
 
     @Autowired
     private MaxnumberService maxnumberService;
+    @Autowired
+    private SubledgerMapper subledgerMapper;
 
 
     @Override
@@ -194,6 +191,14 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             customer.setCu_beginprerecamount(cutpl.getCu_beginprerecamount());
         }
 
+        //更新应收余额
+        Customer customer1 = getMapper().selectByPrimaryKey(cu_id);
+        Double cu_leftamount = (customer1.getCu_beginaramount() == null ? new Double(0) :  customer1.getCu_beginaramount())-
+                (customer1.getCu_beginprerecamount() == null ? new Double(0) : customer1.getCu_beginprerecamount()) +
+                (customer1.getCu_recamount() == null ? new Double(0) : customer1.getCu_recamount()) -
+                (customer1.getCu_preamount() == null ? new Double(0) : customer1.getCu_preamount());
+        customer.setCu_leftamount(cu_leftamount);
+
         //更新操作
         getMapper().updateByPrimaryKeySelective(customer);
         //添加从表传输对象
@@ -240,6 +245,41 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             customeraddressMapper.batchUpdate(updateDetail2);
         }
 
+        //插入中间表
+        Double amount = (customer.getCu_beginaramount() == null ? new Double(0) : customer.getCu_beginaramount())
+                - (customer.getCu_beginprerecamount() == null ? new Double(0) : customer.getCu_beginprerecamount());
+        if (amount != new Double(0)){
+            Subledger subledger = new Subledger();
+            subledger.setSl_code("期初余额");
+            subledger.setSl_kind("期初余额");
+            subledger.setSl_vendid(0);
+            subledger.setSl_custid(Math.toIntExact(customer.getId()));
+            subledger.setCompanyId(BaseContextHolder.getCompanyId());
+            String dates = date2String(customer.getCu_begindate(), "yyyy-mm");
+            dates = dates + "-01";
+            Date date = null;
+            try {
+                date = string2Date(dates, "yyyy-mm-dd");
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            subledger.setSl_date(date);
+            if (amount > new Double(0)){
+                subledger.setSl_amount(amount);
+            }else {
+                subledger.setSl_preamount(amount);
+            }
+            subledger.setSl_orderamount(Math.abs(amount));
+            subledger.setSl_namount(amount);
+
+            Subledger subledger1 = subledgerMapper.selectByKindCodeCustid("期初余额","期初余额",
+                    Math.toIntExact(customer.getId()));
+            if (subledger1 == null) {
+                subledgerMapper.insertSelective(subledger);
+            }else {
+                subledgerMapper.updateByPrimaryKeySelective(subledger);
+            }
+        }
 
         baseDTO = getBaseDTOById(cu_id);
         //日志记录
@@ -261,6 +301,10 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             //从表删除
             customercontactMapper.deleteByFK(id);
             customeraddressMapper.deleteByFK(id);
+
+            //删除中间表
+            subledgerMapper.deleteCustomer("期初余额", "期初余额", Math.toIntExact(id));
+
             //日志
             messageLogService.delete(docBaseDTO);
         }
@@ -424,6 +468,36 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.CUSTOMER.getCaller()).getData();
     }
 
+    /**
+     * String转Date类型
+     *
+     * @param dateStr
+     *            时间字符串
+     * @return Date类型时间
+     * @throws Exception
+     *             异常
+     */
+    public static Date string2Date(String dateStr, String format) throws Exception {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        if (dateStr == null) {
+            return sdf.parse(dateStr);
+        }
+        return null;
+    }
 
+    /**
+     * Date转String
+     *
+     * @param date
+     *            Date类型时间
+     * @return 时间字符串
+     */
+    public static String date2String(Date date, String format) {
+        SimpleDateFormat sdf = new SimpleDateFormat(format);
+        if (date != null) {
+            return sdf.format(date);
+        }
+        return null;
+    }
 
 }

+ 5 - 0
applications/document/document-server/src/main/resources/mapper/BankinformationMapper.xml

@@ -314,4 +314,9 @@
   <select id="getCombo" resultType="com.usoftchina.saas.commons.dto.ComboDTO">
         SELECT CONCAT(bk_bankcode,' ',bk_bankname) display,bk_bankname value FROM bankinformation WHERE COMPANYID=#{companyId}
     </select>
+
+
+  <select id="selectBankcode" parameterType="java.lang.String" resultType="java.lang.String">
+        select bk_bankcode from bankinformation where bk_bankcode = #{bk_bankcode,jdbcType=VARCHAR}
+    </select>
 </mapper>

+ 345 - 0
applications/document/document-server/src/main/resources/mapper/BanksubledgerMapper.xml

@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usoftchina.saas.document.mapper.BanksubledgerMapper">
+    <resultMap id="BaseResultMap" type="com.usoftchina.saas.document.entities.Banksubledger">
+        <id column="bl_id" jdbcType="INTEGER" property="id" />
+        <result column="bl_ym" jdbcType="INTEGER" property="bl_ym" />
+        <result column="bl_bankid" jdbcType="INTEGER" property="bl_bankid" />
+        <result column="bl_bankcode" jdbcType="VARCHAR" property="bl_bankcode" />
+        <result column="bl_bankname" jdbcType="VARCHAR" property="bl_bankname" />
+        <result column="bl_code" jdbcType="VARCHAR" property="bl_code" />
+        <result column="bl_kind" jdbcType="VARCHAR" property="bl_kind" />
+        <result column="bl_date" jdbcType="TIMESTAMP" property="bl_date" />
+        <result column="bl_asstype" jdbcType="VARCHAR" property="bl_asstype" />
+        <result column="bl_asscode" jdbcType="VARCHAR" property="bl_asscode" />
+        <result column="bl_assname" jdbcType="VARCHAR" property="bl_assname" />
+        <result column="bl_income" jdbcType="DOUBLE" property="bl_income" />
+        <result column="bl_spending" jdbcType="DOUBLE" property="bl_spending" />
+        <result column="bl_manname" jdbcType="VARCHAR" property="bl_manname" />
+        <result column="bl_remark" jdbcType="VARCHAR" property="bl_remark" />
+        <result column="companyId" jdbcType="INTEGER" property="companyId" />
+        <result column="updaterId" jdbcType="INTEGER" property="updaterId" />
+        <result column="updatedate" jdbcType="TIMESTAMP" property="updatedate" />
+        <result column="bl_orderamount" property="bl_orderamount" jdbcType="DOUBLE" />
+        <result column="bl_assid" property="bl_assid" jdbcType="INTEGER" />
+        <result column="bl_item" property="bl_item" jdbcType="VARCHAR" />
+    </resultMap>
+    <sql id="Example_Where_Clause">
+        <where>
+            <foreach collection="oredCriteria" item="criteria" separator="or">
+                <if test="criteria.valid">
+                    <trim prefix="(" prefixOverrides="and" suffix=")">
+                        <foreach collection="criteria.criteria" item="criterion">
+                            <choose>
+                                <when test="criterion.noValue">
+                                    and ${criterion.condition}
+                                </when>
+                                <when test="criterion.singleValue">
+                                    and ${criterion.condition} #{criterion.value}
+                                </when>
+                                <when test="criterion.betweenValue">
+                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                                </when>
+                                <when test="criterion.listValue">
+                                    and ${criterion.condition}
+                                    <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                                        #{listItem}
+                                    </foreach>
+                                </when>
+                            </choose>
+                        </foreach>
+                    </trim>
+                </if>
+            </foreach>
+        </where>
+    </sql>
+    <sql id="Update_By_Example_Where_Clause">
+        <where>
+            <foreach collection="example.oredCriteria" item="criteria" separator="or">
+                <if test="criteria.valid">
+                    <trim prefix="(" prefixOverrides="and" suffix=")">
+                        <foreach collection="criteria.criteria" item="criterion">
+                            <choose>
+                                <when test="criterion.noValue">
+                                    and ${criterion.condition}
+                                </when>
+                                <when test="criterion.singleValue">
+                                    and ${criterion.condition} #{criterion.value}
+                                </when>
+                                <when test="criterion.betweenValue">
+                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                                </when>
+                                <when test="criterion.listValue">
+                                    and ${criterion.condition}
+                                    <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                                        #{listItem}
+                                    </foreach>
+                                </when>
+                            </choose>
+                        </foreach>
+                    </trim>
+                </if>
+            </foreach>
+        </where>
+    </sql>
+    <sql id="Base_Column_List">
+    bl_id, bl_ym, bl_bankid, bl_bankcode, bl_bankname, bl_code, bl_kind, bl_date, bl_asstype, 
+    bl_asscode, bl_assname, bl_income, bl_spending, bl_manname, bl_remark, companyId, 
+    updaterId, updatedate, bl_orderamount, bl_assid, bl_item
+  </sql>
+    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from banksubledger
+        where bl_id = #{bl_id,jdbcType=INTEGER}
+    </select>
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    delete from banksubledger
+    where bl_id = #{code,jdbcType=VARCHAR} and bl_kind = #{kind, jdbcType=VARCHAR}
+  </delete>
+
+    <delete id="deleteByBankid" parameterType="java.lang.Integer">
+    delete from banksubledger
+    where bl_id = #{bk_id,jdbcType=INTEGER}
+  </delete>
+
+    <insert id="insert" parameterType="com.usoftchina.saas.document.entities.Banksubledger">
+    insert into banksubledger (bl_id, bl_ym, bl_bankid, 
+      bl_bankcode, bl_bankname, bl_code, 
+      bl_kind, bl_date, bl_asstype, 
+      bl_asscode, bl_assname, bl_income, 
+      bl_spending, bl_manname, bl_remark, 
+      companyId, updaterId, updatedate
+      )
+    values (#{bl_id,jdbcType=INTEGER}, #{bl_ym,jdbcType=INTEGER}, #{bl_bankid,jdbcType=INTEGER}, 
+      #{bl_bankcode,jdbcType=VARCHAR}, #{bl_bankname,jdbcType=VARCHAR}, #{bl_code,jdbcType=VARCHAR}, 
+      #{bl_kind,jdbcType=VARCHAR}, #{bl_date,jdbcType=TIMESTAMP}, #{bl_asstype,jdbcType=VARCHAR}, 
+      #{bl_asscode,jdbcType=VARCHAR}, #{bl_assname,jdbcType=VARCHAR}, #{bl_income,jdbcType=DOUBLE}, 
+      #{bl_spending,jdbcType=DOUBLE}, #{bl_manname,jdbcType=VARCHAR}, #{bl_remark,jdbcType=VARCHAR}, 
+      #{companyId,jdbcType=INTEGER}, #{updaterId,jdbcType=INTEGER}, #{updatedate,jdbcType=TIMESTAMP}
+      )
+  </insert>
+    <insert id="insertSelective" parameterType="com.usoftchina.saas.document.entities.Banksubledger">
+        insert into banksubledger
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="bl_ym != null">
+                bl_ym,
+            </if>
+            <if test="bl_bankid != null">
+                bl_bankid,
+            </if>
+            <if test="bl_bankcode != null">
+                bl_bankcode,
+            </if>
+            <if test="bl_bankname != null">
+                bl_bankname,
+            </if>
+            <if test="bl_code != null">
+                bl_code,
+            </if>
+            <if test="bl_kind != null">
+                bl_kind,
+            </if>
+            <if test="bl_date != null">
+                bl_date,
+            </if>
+            <if test="bl_asstype != null">
+                bl_asstype,
+            </if>
+            <if test="bl_asscode != null">
+                bl_asscode,
+            </if>
+            <if test="bl_assname != null">
+                bl_assname,
+            </if>
+            <if test="bl_income != null">
+                bl_income,
+            </if>
+            <if test="bl_spending != null">
+                bl_spending,
+            </if>
+            <if test="bl_manname != null">
+                bl_manname,
+            </if>
+            <if test="bl_remark != null">
+                bl_remark,
+            </if>
+            <if test="companyId != null">
+                companyId,
+            </if>
+            <if test="updaterId != null">
+                updaterId,
+            </if>
+            <if test="updateTime != null">
+                updatedate,
+            </if>
+            <if test="bl_orderamount != null" >
+                bl_orderamount,
+            </if>
+            <if test="bl_assid != null" >
+                bl_assid,
+            </if>
+            <if test="bl_item != null" >
+                bl_item,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="bl_ym != null">
+                #{bl_ym,jdbcType=INTEGER},
+            </if>
+            <if test="bl_bankid != null">
+                #{bl_bankid,jdbcType=INTEGER},
+            </if>
+            <if test="bl_bankcode != null">
+                #{bl_bankcode,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_bankname != null">
+                #{bl_bankname,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_code != null">
+                #{bl_code,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_kind != null">
+                #{bl_kind,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_date != null">
+                #{bl_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="bl_asstype != null">
+                #{bl_asstype,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_asscode != null">
+                #{bl_asscode,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_assname != null">
+                #{bl_assname,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_income != null">
+                #{bl_income,jdbcType=DOUBLE},
+            </if>
+            <if test="bl_spending != null">
+                #{bl_spending,jdbcType=DOUBLE},
+            </if>
+            <if test="bl_manname != null">
+                #{bl_manname,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_remark != null">
+                #{bl_remark,jdbcType=VARCHAR},
+            </if>
+            <if test="companyId != null">
+                #{companyId,jdbcType=INTEGER},
+            </if>
+            <if test="updaterId != null">
+                #{updaterId,jdbcType=INTEGER},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="bl_orderamount != null" >
+                #{bl_orderamount,jdbcType=DOUBLE},
+            </if>
+            <if test="bl_assid != null" >
+                #{bl_assid,jdbcType=INTEGER},
+            </if>
+            <if test="bl_item != null" >
+                #{bl_item,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.document.entities.Banksubledger">
+        update banksubledger
+        <set>
+            <if test="bl_ym != null">
+                bl_ym = #{bl_ym,jdbcType=INTEGER},
+            </if>
+            <if test="bl_bankid != null">
+                bl_bankid = #{bl_bankid,jdbcType=INTEGER},
+            </if>
+            <if test="bl_bankcode != null">
+                bl_bankcode = #{bl_bankcode,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_bankname != null">
+                bl_bankname = #{bl_bankname,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_code != null">
+                bl_code = #{bl_code,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_kind != null">
+                bl_kind = #{bl_kind,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_date != null">
+                bl_date = #{bl_date,jdbcType=TIMESTAMP},
+            </if>
+            <if test="bl_asstype != null">
+                bl_asstype = #{bl_asstype,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_asscode != null">
+                bl_asscode = #{bl_asscode,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_assname != null">
+                bl_assname = #{bl_assname,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_income != null">
+                bl_income = #{bl_income,jdbcType=DOUBLE},
+            </if>
+            <if test="bl_spending != null">
+                bl_spending = #{bl_spending,jdbcType=DOUBLE},
+            </if>
+            <if test="bl_manname != null">
+                bl_manname = #{bl_manname,jdbcType=VARCHAR},
+            </if>
+            <if test="bl_remark != null">
+                bl_remark = #{bl_remark,jdbcType=VARCHAR},
+            </if>
+            <if test="companyId != null">
+                companyId = #{companyId,jdbcType=INTEGER},
+            </if>
+            <if test="updaterId != null">
+                updaterId = #{updaterId,jdbcType=INTEGER},
+            </if>
+            <if test="updateTime != null">
+                updatedate = #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+        </set>
+        where bl_id = #{id,jdbcType=INTEGER}
+    </update>
+    <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.document.entities.Banksubledger">
+    update banksubledger
+    set bl_ym = #{bl_ym,jdbcType=INTEGER},
+      bl_bankid = #{bl_bankid,jdbcType=INTEGER},
+      bl_bankcode = #{bl_bankcode,jdbcType=VARCHAR},
+      bl_bankname = #{bl_bankname,jdbcType=VARCHAR},
+      bl_code = #{bl_code,jdbcType=VARCHAR},
+      bl_kind = #{bl_kind,jdbcType=VARCHAR},
+      bl_date = #{bl_date,jdbcType=TIMESTAMP},
+      bl_asstype = #{bl_asstype,jdbcType=VARCHAR},
+      bl_asscode = #{bl_asscode,jdbcType=VARCHAR},
+      bl_assname = #{bl_assname,jdbcType=VARCHAR},
+      bl_income = #{bl_income,jdbcType=DOUBLE},
+      bl_spending = #{bl_spending,jdbcType=DOUBLE},
+      bl_manname = #{bl_manname,jdbcType=VARCHAR},
+      bl_remark = #{bl_remark,jdbcType=VARCHAR},
+      companyId = #{companyId,jdbcType=INTEGER},
+      updaterId = #{updaterId,jdbcType=INTEGER},
+      updatedate = #{updatedate,jdbcType=TIMESTAMP}
+    where bl_id = #{bl_id,jdbcType=INTEGER}
+  </update>
+    <select id="selectCode" parameterType="java.lang.String" resultType="java.lang.String">
+        select bl_code
+        from banksubledger
+        where bl_code = #{bl_code,jdbcType=VARCHAR}
+    </select>
+
+    <update id="updateBankcode">
+    update bankinformation
+    set bk_thisamount = (IFNULL(#{bk_thisamount,jdbcType=DOUBLE},0) ${symbol} #{nowbalance})
+    where bk_bankcode = #{bankcode,jdbcType=VARCHAR}
+  </update>
+
+    <select id="selectThisamount" resultType="java.lang.Double" parameterType="java.lang.String">
+   select bk_thisamount from bankinformation
+    where bk_bankcode = #{bankcode,jdbcType=VARCHAR}
+  </select>
+
+</mapper>

+ 263 - 0
applications/document/document-server/src/main/resources/mapper/SubledgerMapper.xml

@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.document.mapper.SubledgerMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.document.entities.Subledger" >
+    <id column="sl_id" property="id" jdbcType="INTEGER" />
+    <result column="sl_code" property="sl_code" jdbcType="VARCHAR" />
+    <result column="sl_kind" property="sl_kind" jdbcType="VARCHAR" />
+    <result column="sl_custid" property="sl_custid" jdbcType="INTEGER" />
+    <result column="sl_vendid" property="sl_vendid" jdbcType="INTEGER" />
+    <result column="sl_date" property="sl_date" jdbcType="TIMESTAMP" />
+    <result column="sl_amount" property="sl_amount" jdbcType="DOUBLE" />
+    <result column="sl_preamount" property="sl_preamount" jdbcType="DOUBLE" />
+    <result column="sl_yamount" property="sl_yamount" jdbcType="DOUBLE" />
+    <result column="sl_namount" property="sl_namount" jdbcType="DOUBLE" />
+    <result column="sl_remark" property="sl_remark" jdbcType="VARCHAR" />
+    <result column="companyId" property="companyId" jdbcType="INTEGER" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="sl_orderamount" property="sl_orderamount" jdbcType="DOUBLE" />
+    <result column="sl_discount" property="sl_discount" jdbcType="DOUBLE" />
+    <result column="sl_ym" property="sl_ym" jdbcType="INTEGER" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    sl_id, sl_code, sl_kind, sl_custid, sl_vendid, sl_date, sl_amount, sl_preamount, 
+    sl_yamount, sl_namount, sl_remark, companyId, updaterId, updateTime, sl_orderamount, 
+    sl_discount, sl_ym
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from subledger
+    where sl_id = #{sl_id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
+    delete from subledger
+    where sl_code = #{code,jdbcType=VARCHAR} and sl_kind = #{kind, jdbcType=VARCHAR}
+  </delete>
+  <insert id="insert" parameterType="com.usoftchina.saas.document.entities.Subledger" >
+    insert into subledger (sl_id, sl_code, sl_kind, 
+      sl_custid, sl_vendid, sl_date, 
+      sl_amount, sl_preamount, sl_yamount, 
+      sl_namount, sl_remark, companyId, 
+      updaterId, updateTime, sl_orderamount, 
+      sl_discount, sl_ym)
+    values (#{sl_id,jdbcType=INTEGER}, #{sl_code,jdbcType=VARCHAR}, #{sl_kind,jdbcType=VARCHAR}, 
+      #{sl_custid,jdbcType=INTEGER}, #{sl_vendid,jdbcType=INTEGER}, #{sl_date,jdbcType=TIMESTAMP}, 
+      #{sl_amount,jdbcType=DOUBLE}, #{sl_preamount,jdbcType=DOUBLE}, #{sl_yamount,jdbcType=DOUBLE}, 
+      #{sl_namount,jdbcType=DOUBLE}, #{sl_remark,jdbcType=VARCHAR}, #{companyId,jdbcType=INTEGER}, 
+      #{updaterId,jdbcType=INTEGER}, #{updateTime,jdbcType=TIMESTAMP}, #{sl_orderamount,jdbcType=DOUBLE}, 
+      #{sl_discount,jdbcType=DOUBLE}, #{sl_ym,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.document.entities.Subledger" >
+    insert into subledger
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="sl_code != null" >
+        sl_code,
+      </if>
+      <if test="sl_kind != null" >
+        sl_kind,
+      </if>
+      <if test="sl_custid != null" >
+        sl_custid,
+      </if>
+      <if test="sl_vendid != null" >
+        sl_vendid,
+      </if>
+      <if test="sl_date != null" >
+        sl_date,
+      </if>
+      <if test="sl_amount != null" >
+        sl_amount,
+      </if>
+      <if test="sl_preamount != null" >
+        sl_preamount,
+      </if>
+      <if test="sl_yamount != null" >
+        sl_yamount,
+      </if>
+      <if test="sl_namount != null" >
+        sl_namount,
+      </if>
+      <if test="sl_remark != null" >
+        sl_remark,
+      </if>
+      <if test="companyId != null" >
+        companyId,
+      </if>
+      <if test="updaterId != null" >
+        updaterId,
+      </if>
+      <if test="updateTime != null" >
+        updateTime,
+      </if>
+      <if test="sl_orderamount != null" >
+        sl_orderamount,
+      </if>
+      <if test="sl_discount != null" >
+        sl_discount,
+      </if>
+      <if test="sl_ym != null" >
+        sl_ym,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="sl_code != null" >
+        #{sl_code,jdbcType=VARCHAR},
+      </if>
+      <if test="sl_kind != null" >
+        #{sl_kind,jdbcType=VARCHAR},
+      </if>
+      <if test="sl_custid != null" >
+        #{sl_custid,jdbcType=INTEGER},
+      </if>
+      <if test="sl_vendid != null" >
+        #{sl_vendid,jdbcType=INTEGER},
+      </if>
+      <if test="sl_date != null" >
+        #{sl_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sl_amount != null" >
+        #{sl_amount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_preamount != null" >
+        #{sl_preamount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_yamount != null" >
+        #{sl_yamount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_namount != null" >
+        #{sl_namount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_remark != null" >
+        #{sl_remark,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterId != null" >
+        #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null" >
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sl_orderamount != null" >
+        #{sl_orderamount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_discount != null" >
+        #{sl_discount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_ym != null" >
+        #{sl_ym,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.document.entities.Subledger" >
+    update subledger
+    <set >
+      <if test="sl_code != null" >
+        sl_code = #{sl_code,jdbcType=VARCHAR},
+      </if>
+      <if test="sl_kind != null" >
+        sl_kind = #{sl_kind,jdbcType=VARCHAR},
+      </if>
+      <if test="sl_custid != null" >
+        sl_custid = #{sl_custid,jdbcType=INTEGER},
+      </if>
+      <if test="sl_vendid != null" >
+        sl_vendid = #{sl_vendid,jdbcType=INTEGER},
+      </if>
+      <if test="sl_date != null" >
+        sl_date = #{sl_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sl_amount != null" >
+        sl_amount = #{sl_amount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_preamount != null" >
+        sl_preamount = #{sl_preamount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_yamount != null" >
+        sl_yamount = #{sl_yamount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_namount != null" >
+        sl_namount = #{sl_namount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_remark != null" >
+        sl_remark = #{sl_remark,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        companyId = #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterId != null" >
+        updaterId = #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null" >
+        updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sl_orderamount != null" >
+        sl_orderamount = #{sl_orderamount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_discount != null" >
+        sl_discount = #{sl_discount,jdbcType=DOUBLE},
+      </if>
+      <if test="sl_ym != null" >
+        sl_ym = #{sl_ym,jdbcType=INTEGER},
+      </if>
+    </set>
+    where sl_id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.document.entities.Subledger" >
+    update subledger
+    set sl_code = #{sl_code,jdbcType=VARCHAR},
+      sl_kind = #{sl_kind,jdbcType=VARCHAR},
+      sl_custid = #{sl_custid,jdbcType=INTEGER},
+      sl_vendid = #{sl_vendid,jdbcType=INTEGER},
+      sl_date = #{sl_date,jdbcType=TIMESTAMP},
+      sl_amount = #{sl_amount,jdbcType=DOUBLE},
+      sl_preamount = #{sl_preamount,jdbcType=DOUBLE},
+      sl_yamount = #{sl_yamount,jdbcType=DOUBLE},
+      sl_namount = #{sl_namount,jdbcType=DOUBLE},
+      sl_remark = #{sl_remark,jdbcType=VARCHAR},
+      companyId = #{companyId,jdbcType=INTEGER},
+      updaterId = #{updaterId,jdbcType=INTEGER},
+      updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      sl_orderamount = #{sl_orderamount,jdbcType=DOUBLE},
+      sl_discount = #{sl_discount,jdbcType=DOUBLE},
+      sl_ym = #{sl_ym,jdbcType=INTEGER}
+    where sl_id = #{sl_id,jdbcType=INTEGER}
+  </update>
+
+  <select id="selectSubledgerBycondition" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    from subledger
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and   subledger.companyId = #{companyId}
+      </if>
+    </where>  order by sl_date desc
+  </select>
+
+  <select id="selectCode" parameterType="java.lang.String" resultMap="BaseResultMap">
+        select sl_code
+        from subledger
+        where sl_code = #{sl_code,jdbcType=VARCHAR}
+    </select>
+
+  <select id="selectByKindCodeCustid" resultMap="BaseResultMap">
+  select
+  <include refid="Base_Column_List" />
+  from subledger
+  where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind,jdbcType=VARCHAR} and
+    sl_custid = #{sl_custid,jdbcType=INTEGER}
+  </select>
+
+  <delete id="deleteCustomer">
+    delete from subledger
+    where sl_code = #{sl_code,jdbcType=VARCHAR} and sl_kind = #{sl_kind, jdbcType=VARCHAR} and
+    sl_custid = #{sl_custid,jdbcType=INTEGER}
+  </delete>
+</mapper>

+ 3 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/FundtransferMapper.java

@@ -1,12 +1,14 @@
 package com.usoftchina.saas.money.mapper;
 
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.money.po.Fundtransfer;
 import com.usoftchina.saas.money.po.Othreceipts;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
-public interface FundtransferMapper {
+public interface FundtransferMapper extends CommonBaseMapper<Fundtransfer> {
+    String selectCodeById(Long id);
     int deleteByPrimaryKey(Integer ftId);
     int deleteItem(int id);
 

+ 4 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/OthreceiptsMapper.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.money.mapper;
 
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.money.po.Othreceipts;
 import com.usoftchina.saas.money.po.Recbalance;
 import com.usoftchina.saas.page.PageRequest;
@@ -7,7 +8,9 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
-public interface OthreceiptsMapper {
+public interface OthreceiptsMapper extends CommonBaseMapper<Othreceipts> {
+
+    String selectCodeById(Long id);
     int deleteByPrimaryKey(Integer orId);
 
     int insert(Othreceipts record);

+ 3 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/OthspendingsMapper.java

@@ -1,12 +1,14 @@
 package com.usoftchina.saas.money.mapper;
 
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.money.po.Othreceipts;
 import com.usoftchina.saas.money.po.Othspendings;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
-public interface OthspendingsMapper {
+public interface OthspendingsMapper extends CommonBaseMapper<Othspendings> {
+    String selectCodeById(Long id);
     int deleteByPrimaryKey(Integer osId);
 
     int insert(Othspendings record);

+ 1 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/PaybalanceMapper.java

@@ -11,6 +11,7 @@ import java.util.List;
 
 public interface PaybalanceMapper extends CommonBaseMapper<Paybalance> {
 
+    String selectCodeById(Long id);
     int deleteByPrimaryKey(Integer pb_id);
 
 //    Long insert(Paybalance record);

+ 1 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/RecbalanceMapper.java

@@ -14,6 +14,7 @@ import org.apache.ibatis.annotations.Param;
  * @createtime 2018-10-19 15:58
  */
 public interface RecbalanceMapper extends CommonBaseMapper<Recbalance> {
+    String selectCodeById(Long id);
     int countByExample(RecbalanceExample example);
 
     int deleteByExample(RecbalanceExample example);

+ 32 - 3
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java

@@ -2,7 +2,9 @@ package com.usoftchina.saas.money.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -27,7 +29,7 @@ import java.util.List;
  * @date 2018/10/25 19:32
  **/
 @Service
-public class FundtransferServiceImpl implements FundtransferService {
+public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferMapper, Fundtransfer> implements FundtransferService {
     @Autowired
     private FundtransferMapper fundtransferMapper;
     @Autowired
@@ -38,6 +40,8 @@ public class FundtransferServiceImpl implements FundtransferService {
     private BanksubledgerMapper banksubledgerMapper;
     @Autowired
     private PaybalanceMapper paybalanceMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
     @Override
     public DocBaseDTO insert(Fundtran fundtran) {
@@ -76,7 +80,10 @@ public class FundtransferServiceImpl implements FundtransferService {
                 fundtransferdetailMapper.insertSelective(fundtransferdetail);
             }
         }
-        return new DocBaseDTO(id, ft_code, BillCodeSeq.FUNDTRANSFER.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -118,7 +125,10 @@ public class FundtransferServiceImpl implements FundtransferService {
             paybalanceMapper.updateBankAmount(thisamount, bk_id);
             paybalanceMapper.updateBankAmount(bk_inamount + fundtransferdetail.getFtd_nowbalance(), bk_inid);
         }
-        return new DocBaseDTO(id, ft_code, BillCodeSeq.FUNDTRANSFER.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -154,6 +164,10 @@ public class FundtransferServiceImpl implements FundtransferService {
             paybalanceMapper.updateBankAmount(bk_amount + fundtransferdetail.getFtd_nowbalance(), bk_id);
             paybalanceMapper.updateBankAmount(bk_inamount - fundtransferdetail.getFtd_nowbalance(), bk_inid);
         }
+
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
 
@@ -161,11 +175,17 @@ public class FundtransferServiceImpl implements FundtransferService {
     public void delete(int id) {
         fundtransferMapper.deleteByPrimaryKey(id);
         fundtransferdetailMapper.deleteByPrimaryKey(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
     public void deleteItem(int id) {
         fundtransferdetailMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
@@ -293,4 +313,13 @@ public class FundtransferServiceImpl implements FundtransferService {
             }
         }
     }
+
+    private DocBaseDTO getBaseDTOById(Long id) {
+        if (null == id) {
+            return null;
+        }
+        String code = getMapper().selectCodeById(id);
+        DocBaseDTO baseDTO = new DocBaseDTO(id, code, BillCodeSeq.FUNDTRANSFER.getCaller());
+        return baseDTO;
+    }
 }

+ 32 - 6
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java

@@ -2,7 +2,9 @@ package com.usoftchina.saas.money.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -30,7 +32,7 @@ import java.util.List;
  * @date 2018/10/24 17:48
  **/
 @Service
-public class OthreceiptsServiceImpl implements OthreceiptsService {
+public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMapper, Othreceipts> implements OthreceiptsService {
 
     @Autowired
     private OthreceiptsMapper othreceiptsMapper;
@@ -42,6 +44,8 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
     private BanksubledgerMapper banksubledgerMapper;
     @Autowired
     private StatsinfoMapper statsinfoMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
     @Override
     public DocBaseDTO insert(Othte othte) {
@@ -80,7 +84,10 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
                 othreceiptsdetailMapper.insertSelective(othreceiptsdetail1);
             }
         }
-        return new DocBaseDTO(id, or_code, BillCodeSeq.OTHRECEIPTS.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -92,7 +99,6 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
         this.changBankUntil(othte);
         DocBaseDTO docBaseDTO = this.insert(othte);
         Long id = docBaseDTO.getId();
-        String or_code = docBaseDTO.getCode();
 
         Double amount = banksubledgerMapper.selectThisamount(othreceipts.getOr_bankcode());
         //取从表金额
@@ -118,7 +124,11 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
-        return new DocBaseDTO(id, or_code, BillCodeSeq.OTHRECEIPTS.getCaller());
+
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -156,18 +166,25 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
-
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
-
     @Override
     public void delete(int id) {
         othreceiptsMapper.deleteByPrimaryKey(id);
         othreceiptsdetailMapper.deleteByPrimaryKey(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     public void deleteItem(int id) {
         othreceiptsdetailMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
@@ -297,4 +314,13 @@ public class OthreceiptsServiceImpl implements OthreceiptsService {
             }
         }
     }
+
+    private DocBaseDTO getBaseDTOById(Long id) {
+        if (null == id) {
+            return null;
+        }
+        String code = getMapper().selectCodeById(id);
+        DocBaseDTO baseDTO = new DocBaseDTO(id, code, BillCodeSeq.OTHRECEIPTS.getCaller());
+        return baseDTO;
+    }
 }

+ 32 - 4
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java

@@ -2,7 +2,9 @@ package com.usoftchina.saas.money.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -30,7 +32,7 @@ import java.util.List;
  * @date 2018/10/24 22:22
  **/
 @Service
-public class OthspendingsServiceImpl implements OthspendingsService {
+public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsMapper, Othspendings> implements OthspendingsService {
     @Autowired
     private OthspendingsMapper othspendingsMapper;
     @Autowired
@@ -41,6 +43,8 @@ public class OthspendingsServiceImpl implements OthspendingsService {
     private BanksubledgerMapper banksubledgerMapper;
     @Autowired
     private StatsinfoMapper statsinfoMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
     @Override
     public DocBaseDTO insert(Othsp othsp) {
@@ -78,18 +82,27 @@ public class OthspendingsServiceImpl implements OthspendingsService {
                 othspendingsdetailMapper.insertSelective(othspendingsdetail);
             }
         }
-        return new DocBaseDTO(id, os_code, BillCodeSeq.OTHSPENDINGS.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
     public void delete(int id) {
         othspendingsMapper.deleteByPrimaryKey(id);
         othspendingsdetailMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
     public void deleteItem(int id) {
         othspendingsdetailMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
@@ -125,7 +138,6 @@ public class OthspendingsServiceImpl implements OthspendingsService {
         this.changBankUntil(othsp);
         DocBaseDTO docBaseDTO = this.insert(othsp);
         Long id = docBaseDTO.getId();
-        String os_code = docBaseDTO.getCode();
 
         Double amount = banksubledgerMapper.selectThisamount(othspendings.getOs_bankcode());
         //取从表金额
@@ -151,7 +163,10 @@ public class OthspendingsServiceImpl implements OthspendingsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
-        return new DocBaseDTO(id, os_code, BillCodeSeq.OTHSPENDINGS.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -191,6 +206,10 @@ public class OthspendingsServiceImpl implements OthspendingsService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
@@ -297,4 +316,13 @@ public class OthspendingsServiceImpl implements OthspendingsService {
             }
         }
     }
+
+    private DocBaseDTO getBaseDTOById(Long id) {
+        if (null == id) {
+            return null;
+        }
+        String code = getMapper().selectCodeById(id);
+        DocBaseDTO baseDTO = new DocBaseDTO(id, code, BillCodeSeq.OTHSPENDINGS.getCaller());
+        return baseDTO;
+    }
 }

+ 34 - 4
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java

@@ -2,7 +2,9 @@ package com.usoftchina.saas.money.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -27,7 +29,7 @@ import java.util.List;
  * @date 2018/10/22 14:28
  **/
 @Service
-public class PaybalanceServiceImpl implements PaybalanceService {
+public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMapper, Paybalance> implements PaybalanceService {
     @Autowired
     private PaybalanceMapper paybalanceMapper;
     @Autowired
@@ -42,6 +44,8 @@ public class PaybalanceServiceImpl implements PaybalanceService {
     private BanksubledgerMapper banksubledgerMapper;
     @Autowired
     private StatsinfoMapper statsinfoMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
     public DocBaseDTO insert(Pay pay) {
         Paybalance paybalance = pay.getMain();
@@ -95,7 +99,10 @@ public class PaybalanceServiceImpl implements PaybalanceService {
                 paybalancedetailMapper.insertSelective(paybalancedetail1);
             }
         }
-        return new DocBaseDTO(pbId, pb_code, BillCodeSeq.PAYBALANCE.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(pbId);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     /**
@@ -178,7 +185,6 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         this.changBankUntil(pay);
         DocBaseDTO docBaseDTO = this.insert(pay);
         Long id = docBaseDTO.getId();
-        String pb_code = docBaseDTO.getCode();
 
         Paybalance updatePay = new Paybalance();
         List<Paybalancedet> paybalancedet = pay.getItems1();
@@ -255,7 +261,10 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
-        return new DocBaseDTO(id, pb_code, BillCodeSeq.PAYBALANCE.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -335,6 +344,9 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
 
@@ -342,16 +354,25 @@ public class PaybalanceServiceImpl implements PaybalanceService {
         paybalanceMapper.deleteByPrimaryKey(id);
         paybalancedetailMapper.deleteByPrimaryKey(id);
         paybalancedetMapper.deleteByPrimaryKey(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
     public void deleteItem(int id) {
         paybalancedetMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
     public void deleteItems(int id) {
         paybalancedetailMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     public Pay select(int id){
@@ -529,4 +550,13 @@ public class PaybalanceServiceImpl implements PaybalanceService {
 
         }
     }
+
+    private DocBaseDTO getBaseDTOById(Long id) {
+        if (null == id) {
+            return null;
+        }
+        String code = getMapper().selectCodeById(id);
+        DocBaseDTO baseDTO = new DocBaseDTO(id, code, BillCodeSeq.PAYBALANCE.getCaller());
+        return baseDTO;
+    }
 }

+ 33 - 4
applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java

@@ -2,7 +2,9 @@ package com.usoftchina.saas.money.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
+import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
@@ -27,7 +29,7 @@ import java.util.List;
  * @date 2018/10/23 16:18
  **/
 @Service
-public class RecbalanceServiceImpl implements RecbalanceService {
+public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMapper, Recbalance> implements RecbalanceService {
     @Autowired
     RecbalanceMapper recbalanceMapper;
     @Autowired
@@ -42,6 +44,8 @@ public class RecbalanceServiceImpl implements RecbalanceService {
     private SubledgerMapper subledgerMapper;
     @Autowired
     private StatsinfoMapper statsinfoMapper;
+    @Autowired
+    private MessageLogService messageLogService;
 
     @Override
     public DocBaseDTO insert(Rec rec) {
@@ -94,7 +98,10 @@ public class RecbalanceServiceImpl implements RecbalanceService {
                 recbalancedetailMapper.insertSelective(recbalancedetail1);
             }
         }
-        return new DocBaseDTO(rbId, pu_code, BillCodeSeq.RECBALANCE.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(rbId);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     /**
@@ -165,6 +172,9 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         recbalanceMapper.deleteByPrimaryKey(id);
         recbalancedetMapper.deleteByPrimaryKey(id);
         recbalancedetailMapper.deleteByPrimaryKey(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
@@ -182,11 +192,17 @@ public class RecbalanceServiceImpl implements RecbalanceService {
     @Override
     public void deleteItem(int id) {
         recbalancedetMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
     public void deleteItems(int id) {
         recbalancedetailMapper.deleteItem(id);
+        DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     @Override
@@ -205,7 +221,6 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         this.changBankUntil(rec);
         DocBaseDTO docBaseDTO = this.insert(rec);
         Long id = docBaseDTO.getId();
-        String pu_code = docBaseDTO.getCode();
 
         Recbalance updateRay = new Recbalance();
         List<Recbalancedet> recbalancedet = rec.getItems1();
@@ -283,7 +298,10 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
-        return new DocBaseDTO(id, pu_code, BillCodeSeq.RECBALANCE.getCaller());
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
+        return baseDTO;
     }
 
     @Override
@@ -364,6 +382,9 @@ public class RecbalanceServiceImpl implements RecbalanceService {
         }else {
             statsinfoMapper.update(statsinfo);
         }
+        DocBaseDTO baseDTO = getBaseDTOById(id);
+        //日志记录
+        messageLogService.save(baseDTO);
     }
 
     public PageInfo<Recbalance> selectList(PageRequest page, ListReqDTO reqDTO) {
@@ -528,4 +549,12 @@ public class RecbalanceServiceImpl implements RecbalanceService {
 
         }
     }
+    private DocBaseDTO getBaseDTOById(Long id) {
+        if (null == id) {
+            return null;
+        }
+        String code = getMapper().selectCodeById(id);
+        DocBaseDTO baseDTO = new DocBaseDTO(id, code, BillCodeSeq.RECBALANCE.getCaller());
+        return baseDTO;
+    }
 }

+ 7 - 0
applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml

@@ -258,4 +258,11 @@
       </if>
     </where>  order by ft_date desc, ft_code desc
   </select>
+
+  <select id="selectCodeById" parameterType="java.lang.Long" resultType="string">
+    select
+    ft_code
+    from fundtransfer
+    where ft_id = #{id,jdbcType=INTEGER}
+  </select>
 </mapper>

+ 7 - 0
applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml

@@ -343,4 +343,11 @@
       </if>
     </where>  order by or_date desc, or_code desc
   </select>
+
+  <select id="selectCodeById" parameterType="java.lang.Long" resultType="string">
+    select
+    or_code
+    from othreceipts
+    where or_id = #{id,jdbcType=INTEGER}
+  </select>
 </mapper>

+ 7 - 0
applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml

@@ -338,4 +338,11 @@
       </if>
     </where>  order by os_date desc,os_code desc
   </select>
+
+  <select id="selectCodeById" parameterType="java.lang.Long" resultType="string">
+    select
+    os_code
+    from othspendings
+    where os_id = #{id,jdbcType=INTEGER}
+  </select>
 </mapper>

+ 6 - 0
applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml

@@ -469,6 +469,12 @@
     select count(1) from paybalance where pb_code = #{code} and pb_id != #{id} and companyId =#{companyId}
   </select>
 
+  <select id="selectCodeById" parameterType="java.lang.Long" resultType="string">
+    select
+    pb_code
+    from paybalance
+    where pb_id = #{id,jdbcType=INTEGER}
+  </select>
 
   <!-- 银行账户-->
   <sql id="Bank_Column_List" >

+ 7 - 0
applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml

@@ -604,6 +604,13 @@
     select count(1) from recbalance where rb_code = #{code} and rb_id != #{id} and companyId =#{companyId}
   </select>
 
+  <select id="selectCodeById" parameterType="java.lang.Long" resultType="string">
+    select
+    rb_code
+    from recbalance
+    where rb_id = #{id,jdbcType=INTEGER}
+  </select>
+
   <!-- 银行账户-->
   <sql id="Bank_Column_List" >
     bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount,

+ 4 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/ProdInOutService.java

@@ -6,6 +6,7 @@ import com.usoftchina.saas.base.service.CommonBaseService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.po.BillCodeSeq;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.purchase.dto.ProdInOutFormDTO;
 import com.usoftchina.saas.purchase.mapper.ProdInOutMapper;
@@ -77,7 +78,9 @@ public interface ProdInOutService extends CommonBaseService<ProdInOutMapper, Pro
 
     void calcProdInout(Long pi_id, String pi_class);
 
-    String pushMaxnubmer(ProdInOut prodInOut);
+    //String pushMaxnubmer(DocBaseDTO baseDTO);
+
+    String getMaxnumber(BillCodeSeq bill);
 
     void getDefaultWarehouseByProduct(Long pi_id);
 }

+ 36 - 29
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java

@@ -30,6 +30,7 @@ import com.usoftchina.saas.purchase.service.ProdInOutService;
 import com.usoftchina.saas.utils.BeanMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
@@ -112,7 +113,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     }
 
     @Override
-    @Transactional
+    @Transactional(propagation = Propagation.REQUIRED)
     public DocBaseDTO saveFormData(ProdInOutFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
             throw new BizException(500, "数据为空,请填写后再保存");
@@ -120,8 +121,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
         //人员Id
-        Map<String,Object>  emp= employeeApi.getEmployeeByAccount();
-        Long userId = Long.valueOf(String.valueOf(emp.get("em_id")));
+        Long userId = BaseContextHolder.getUserId();
 
         //获取主表信息
         ProdInOutDTO main = formdata.getMain();
@@ -137,14 +137,17 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         ProdInOut prodInOut = BeanMapper.map(main,ProdInOut.class);
         prodInOut.setCompanyId(companyId);
         prodInOut.setPi_recordmanid(userId.intValue());
-        prodInOut.setPi_recordman(emp.get("em_name").toString());
+//        prodInOut.setPi_recordman(emp.get("em_name").toString());
         prodInOut.setCreatorId(userId);
         prodInOut.setCreateTime(new Date());
         prodInOut.setPi_date(new Date());
         prodInOut.setPi_puid(main.getPi_puid());
         prodInOut.setPi_pucode(main.getPi_pucode());
+        baseDTO.setCode(pi_inoutno);
+        baseDTO.setId(pi_id);
+        baseDTO.setName(pi_class);
         //编号获取
-        pi_inoutno = pushMaxnubmer(prodInOut);
+        pi_inoutno = pushMaxnubmer(baseDTO);
         prodInOut.setPi_inoutno(pi_inoutno);
 
         //判断更新与保存动作
@@ -225,6 +228,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         singleDelete(id);
     }
 
+    @Transactional(propagation = Propagation.REQUIRED)
     private void singleDelete(Long id) {
 
             ProdInOut prodInOut = checkAndReturnOrder(id);;
@@ -241,13 +245,12 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
 
 
     @Override
-    @Transactional
     public DocBaseDTO audit(ProdInOutFormDTO formData) {
         Long id = null;
         DocBaseDTO baseDTO = new DocBaseDTO();
         if (null != formData) {
             id = formData.getMain().getId();
-            if (StringUtils.isEmpty(id)) {
+            if (StringUtils.isEmpty(id) ||"0".equals(String.valueOf(id))) {
                 baseDTO = saveFormData(formData);
                 id = baseDTO.getId();
             }
@@ -257,6 +260,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return baseDTO;
     }
 
+    @Transactional(propagation = Propagation.REQUIRED)
     private void singleAudit(ProdInOutDTO prodInOutDTO) {
         String pi_class= prodInOutDTO.getPi_class();
         String pi_inoutno = prodInOutDTO.getPi_inoutno();
@@ -428,7 +432,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         //插入验退单主表
         ProdInOut targetPi = new ProdInOut();
         //生成单号
-        String piInoutno = maxnumberService.getMaxnumber(BillCodeSeq.PURCHASEOUT.getCaller(),true).getData();
+        String piInoutno = getMaxnumber(BillCodeSeq.PURCHASEOUT);
         targetPi.setPi_inoutno(piInoutno);
         targetPi.setPi_class(BillCodeSeq.PURCHASEOUT.getName());
         targetPi.setPi_date(new Date());
@@ -546,7 +550,6 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return docBaseDTO;
     }
 
-
     @Override
     public DocBaseDTO open(long id) {
         return singleOpen(id);
@@ -575,26 +578,6 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return baseDTO;
     }
 
-
-    public String pushMaxnubmer(ProdInOut prodInOut) {
-        String pi_inoutno = prodInOut.getPi_inoutno();
-        String pi_class = prodInOut.getPi_class();
-        Long id = prodInOut.getId();
-        if (null == pi_inoutno) {
-            throw new BizException(BizExceptionCode.NULL_CODE);
-        }
-        Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(pi_inoutno, companyId) :
-                getMapper().validateCodeWhenUpdate(pi_inoutno, id, companyId);
-        String caller ="";
-        if("采购验收单".equals(pi_class)){
-            caller = BillCodeSeq.PURCHASEIN.getCaller();
-        }else if("采购验退单".equals(pi_class)) {
-            caller = BillCodeSeq.PURCHASEOUT.getCaller();
-        }
-        return maxnumberService.pushMaxnubmer(count, pi_inoutno, caller).getData();
-    }
-
     @Override
     @Transactional
     public void getDefaultWarehouseByProduct(Long pi_id) {
@@ -613,5 +596,29 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return prodInOut;
     }
 
+    @Override
+    public String getMaxnumber(BillCodeSeq bill) {
+        String code = maxnumberService.getMaxnumber(bill.getCaller(), false).getData();
+        DocBaseDTO base = new DocBaseDTO(0l, code, bill.getName());
+        return pushMaxnubmer(base);
+    }
 
+    public synchronized String pushMaxnubmer(DocBaseDTO baseDTO) {
+        String pi_inoutno = baseDTO.getCode();
+        String pi_class = baseDTO.getName();
+        Long id = baseDTO.getId();
+        if (null == pi_inoutno) {
+            throw new BizException(BizExceptionCode.NULL_CODE);
+        }
+        Long companyId = BaseContextHolder.getCompanyId();
+        Integer count = "0".equals(String.valueOf(id)) ? getMapper().validateCodeWhenInsert(pi_inoutno, companyId) :
+                getMapper().validateCodeWhenUpdate(pi_inoutno, id, companyId);
+        String caller ="";
+        if("采购验收单".equals(pi_class)){
+            caller = BillCodeSeq.PURCHASEIN.getCaller();
+        }else if("采购验退单".equals(pi_class)) {
+            caller = BillCodeSeq.PURCHASEOUT.getCaller();
+        }
+        return maxnumberService.pushMaxnubmer(count, pi_inoutno, caller).getData();
+    }
 }

+ 2 - 2
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -416,7 +416,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //插入验收单主表
         ProdInOut prodInOut = new ProdInOut();
         //生成单号
-        String piInoutno =maxnumberService.getMaxnumber(BillCodeSeq.PURCHASEIN.getCaller(),true).getData();
+        String piInoutno = prodInOutService.getMaxnumber(BillCodeSeq.PURCHASEIN);
         prodInOut.setPi_inoutno(piInoutno);
         prodInOut.setPi_class("采购验收单");
         prodInOut.setPi_date(new Date());
@@ -561,7 +561,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     * @Author: guq
     * @Date: 2018/10/19
     */
-    private String pushMaxnubmer(String code, Long id) {
+    private synchronized String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }

+ 2 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/po/report/SalerecView.java

@@ -34,5 +34,7 @@ public class SalerecView {
 
     private String rb_remark;
 
+    private Double rbd_amount;
+
     private Integer companyid;
 }

+ 3 - 0
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/ProdInOutService.java

@@ -7,6 +7,7 @@ import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.po.BillCodeSeq;
 import com.usoftchina.saas.page.PageRequest;
 
 import com.usoftchina.saas.sale.dto.ProdInOutFormDTO;
@@ -119,4 +120,6 @@ public interface ProdInOutService extends CommonBaseService<ProdInOutMapper, Pro
      * @param id
      */
     DocBaseDTO turnProdin(Long id);
+
+    String getMaxnumber(BillCodeSeq bill);
 }

+ 19 - 10
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java

@@ -99,8 +99,11 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         if(prodInOut.getPi_date() == null){
             prodInOut.setPi_date(new Date());
         }
+        baseDTO.setName(pi_class);
+        baseDTO.setId(pi_id);
+        baseDTO.setCode(pi_inoutno);
         //编号获取
-        pi_inoutno = pushMaxnubmer(prodInOut);
+        pi_inoutno = pushMaxnubmer(baseDTO);
         prodInOut.setPi_inoutno(pi_inoutno);
         prodInOut.setPi_class(main.getPi_class());
         prodInOut.setPi_said(main.getPi_said());
@@ -405,10 +408,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         //插入销售退货单主表
         ProdInOut targetPi = new ProdInOut();
         //生成单号
-        String piInoutno  =
-                maxnumberService.getMaxnumber(BillCodeSeq.SALEIN.getCaller(),true).getData();
+       /* String piInoutno  =
+                maxnumberService.getMaxnumber(BillCodeSeq.SALEIN.getCaller(),true).getData();*/
                // BillCodeSeq.SALEIN.getCaller()+Math.abs(Math.random()*100);
-
+        String piInoutno = getMaxnumber(BillCodeSeq.SALEIN);
         //设置公司id
         targetPi.setCompanyId(sourcePi.getCompanyId());
         targetPi.setCreateTime(new Date());
@@ -563,10 +566,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
      * @Author: guq
      * @Date: 2018/10/19
      */
-    private String pushMaxnubmer(ProdInOut prodInOut) {
-        String code = prodInOut.getPi_inoutno();
-        Long id = prodInOut.getId();
-        String pi_class = prodInOut.getPi_class();
+    private synchronized String pushMaxnubmer(DocBaseDTO baseDTO) {
+        String code = baseDTO.getCode();
+        Long id = baseDTO.getId();
+        String pi_class = baseDTO.getName();
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
@@ -578,8 +581,14 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         }else {//销售退货单
             caller = BillCodeSeq.SALEIN.getCaller();
         }
-        return //code;
-                maxnumberService.pushMaxnubmer(count, code, caller).getData();
+        return maxnumberService.pushMaxnubmer(count, code, caller).getData();
+    }
+
+    @Override
+    public String getMaxnumber(BillCodeSeq bill) {
+        String code = maxnumberService.getMaxnumber(bill.getCaller(), false).getData();
+        DocBaseDTO base = new DocBaseDTO(0l, code, bill.getName());
+        return pushMaxnubmer(base);
     }
 
     /**

+ 7 - 3
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java

@@ -21,6 +21,7 @@ import com.usoftchina.saas.sale.mapper.*;
 import com.usoftchina.saas.sale.po.Sale;
 import com.usoftchina.saas.sale.po.SaleDetail;
 import com.usoftchina.saas.sale.po.SaleList;
+import com.usoftchina.saas.sale.service.ProdInOutService;
 import com.usoftchina.saas.sale.service.SaleService;
 import com.usoftchina.saas.storage.po.ProdIODetail;
 import com.usoftchina.saas.storage.po.ProdInOut;
@@ -53,6 +54,8 @@ public class SaleServiceImpl implements SaleService{
     private ProdInOutMapper prodInOutMapper;
     @Autowired
     private ProdIODetailMapper prodIODetailMapper;
+    @Autowired
+    private ProdInOutService prodInOutService;
 
     @Override
     public PageInfo<SaleList> getListData(PageRequest page, ListReqDTO req) {
@@ -429,8 +432,9 @@ public class SaleServiceImpl implements SaleService{
         //插入验收单主表
         ProdInOut prodInOut = new ProdInOut();
         //生成单号
-        String pi_inoutno = maxnumberService.getMaxnumber(BillCodeSeq.SALEOUT.getCaller(),
-                true).getData();
+       /* String pi_inoutno = maxnumberService.getMaxnumber(BillCodeSeq.SALEOUT.getCaller(),
+                true).getData();*/
+        String pi_inoutno = prodInOutService.getMaxnumber(BillCodeSeq.SALEOUT);
         prodInOut.setPi_inoutno(pi_inoutno);
         prodInOut.setPi_class(BillCodeSeq.SALEOUT.getName());
         prodInOut.setPi_date(new Date());
@@ -553,7 +557,7 @@ public class SaleServiceImpl implements SaleService{
      * @Author: guq
      * @Date: 2018/10/19
      */
-    private String pushMaxnubmer(String code, Long id) {
+    private synchronized String pushMaxnubmer(String code, Long id) {
         if (null == code) {
             throw new BizException(BizExceptionCode.NULL_CODE);
         }

+ 1 - 0
applications/sale/sale-server/src/main/resources/mapper/SalerecViewMapper.xml

@@ -15,6 +15,7 @@
     <result column="rb_backrate" property="rb_backrate" jdbcType="DOUBLE" />
     <result column="rb_remark" property="rb_remark" jdbcType="VARCHAR" />
     <result column="companyid" property="companyid" jdbcType="INTEGER" />
+    <result column="rbd_amount" property="rbd_amount" jdbcType="DOUBLE" />
   </resultMap>
   <select id="selectByCondition" resultMap="BaseResultMap">
     select  *  from Salerec_View

+ 1 - 0
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/report/ProdiodetailView.java

@@ -13,6 +13,7 @@ import java.util.Date;
 public class ProdiodetailView implements Serializable{
 
     private String pi_inoutno;
+    private String pd_ordercode;
     private String pi_class;
     private String bizcode;
     private String bizname;

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

@@ -29,6 +29,7 @@ import com.usoftchina.saas.storage.service.ProdInOutService;
 import com.usoftchina.saas.utils.BeanMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
@@ -102,7 +103,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     }
 
     @Override
-    @Transactional
+    @Transactional(propagation = Propagation.REQUIRED)
     public DocBaseDTO saveFormData(ProdInOutFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
             throw new BizException(500, "数据为空,请填写后再保存");
@@ -217,7 +218,6 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
 
 
     @Override
-    @Transactional
     public DocBaseDTO audit(ProdInOutFormDTO formData) {
         Long id = null;
         DocBaseDTO baseDTO = new DocBaseDTO();
@@ -233,6 +233,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         return baseDTO;
     }
 
+    @Transactional(propagation = Propagation.REQUIRED)
     private void singleAudit(ProdInOutDTO prodInOutDTO) {
         String pi_class= prodInOutDTO.getPi_class();
         String pi_inoutno = prodInOutDTO.getPi_inoutno();

+ 1 - 0
applications/storage/storage-server/src/main/resources/mapper/ProdInOutReportMapper.xml

@@ -4,6 +4,7 @@
 
   <resultMap id="ProdiodetailMap" type="com.usoftchina.saas.storage.po.report.ProdiodetailView">
     <result column="pi_inoutno" jdbcType="VARCHAR" property="pi_inoutno" />
+    <result column="pd_ordercode" jdbcType="VARCHAR" property="pd_ordercode" />
     <result column="pi_class" jdbcType="VARCHAR" property="pi_class" />
     <result column="bizcode" jdbcType="VARCHAR" property="bizcode" />
     <result column="bizname" jdbcType="VARCHAR" property="bizname" />

+ 1 - 1
base-servers/mail/mail-api/src/main/java/com/usoftchina/saas/mail/MailBuilder.java

@@ -185,7 +185,7 @@ public abstract class MailBuilder {
 
         @Override
         protected Result send(MailApi api) {
-            return api.sendTemplate(new TemplateMailMessage(templateId, to, cc, bcc, metadata));
+            return api.sendTemplate(new TemplateMailMessage(templateId, from, to, cc, bcc, metadata));
         }
     }
 }

+ 4 - 0
base-servers/mail/mail-server/pom.xml

@@ -56,6 +56,10 @@
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>
         </dependency>
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
base-servers/mail/mail-server/src/main/java/com/usoftchina/saas/mail/MailApplication.java

@@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @SpringBootApplication
 @EnableEurekaClient
 @EnableAuthClient
-@MapperScan
+@MapperScan("com.usoftchina.saas.mail.mapper")
 @EnableTransactionManagement
 public class MailApplication {
     public static void main(String[] args) {

+ 2 - 0
frontend/saas-web/app/view/core/form/FormPanel.js

@@ -198,6 +198,8 @@ Ext.define('saas.view.core.form.FormPanel', {
         viewModel.set(codeField, '');
         viewModel.set('createTime', Ext.Date.format(new Date(), 'Y-m-d H:i:s'));
         viewModel.set('updateTime', Ext.Date.format(new Date(), 'Y-m-d H:i:s'));
+        viewModel.set('creatorId', getCurrentUse().id);
+        viewModel.set('creator', getCurrentUse().realname);
 
         if (statusCodeField) {
             var o = {};

+ 13 - 24
frontend/saas-web/app/view/document/customer/BasePanel.js

@@ -9,30 +9,30 @@ Ext.define('saas.view.document.customer.BasePanel', {
         xtype : "textfield", 
         name : "cu_code", 
         emptyText : "客户编号", 
-        columnWidth : 0.25,
+        width:90,
     },{
         xtype : "textfield", 
         name : "cu_name", 
         emptyText : "客户名称", 
-        columnWidth : 0.25
+        width:90,
     },{
         editable:false,
         hiddenBtn:true,
         xtype : "remotecombo", 
         storeUrl:'/api/document/customerkind/getCombo',
         name : "cu_type", 
-        emptyText : "请选择客户类型", 
-        columnWidth : 0.25
+        emptyText : "客户类型", 
+        width:120,
     },{
         xtype : "textfield", 
         name : "cu_sellername", 
         emptyText : "业务员", 
-        columnWidth : 0.25,
+        width:120,
     },{
         xtype : "textfield", 
         name : "cu_promisedays", 
         emptyText : "承付天数", 
-        columnWidth : 0.25,
+        width:120,
         getCondition: function(value) {
             if(value.indexOf("=")>=0||value.indexOf("<")>=0||value.indexOf(">")>=0){
                 return ' cu_promisedays ' + value;
@@ -46,7 +46,7 @@ Ext.define('saas.view.document.customer.BasePanel', {
         xtype : "textfield", 
         name : "cu_credit", 
         emptyText : "额度", 
-        columnWidth : 0.25,
+        width:70,
         dataIndex : "cu_credit",
         getCondition: function(value) {
             if(value.indexOf("=")>=0||value.indexOf("<")>=0||value.indexOf(">")>=0){
@@ -60,12 +60,12 @@ Ext.define('saas.view.document.customer.BasePanel', {
     },{
         xtype: 'combobox',
         name: 'cu_statuscode',
-        fieldLabel: '状态',
         queryMode: 'local',
         displayField: 'cu_status',
         valueField: 'cu_statuscode',
-        emptyText :'全部',
+        emptyText :'状态',
         editable:false,
+        width:100,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['cu_statuscode', 'cu_status'],
         data: [
@@ -101,7 +101,7 @@ Ext.define('saas.view.document.customer.BasePanel', {
         columns : [
         {
             text : "客户id", 
-            width : 0, 
+            hidden:true,
             dataIndex : "id", 
             xtype : "numbercolumn", 
         },{
@@ -160,32 +160,21 @@ Ext.define('saas.view.document.customer.BasePanel', {
         },{
             text : "客户状态", 
             dataIndex : "cu_status", 
-            flex : 1.0
         }, 
         {
             text : "客户状态码", 
             dataIndex : "cu_statuscode", 
-            width : 0 
+            hidden:true
         }, 
         {
             text : "默认客户地址", 
             dataIndex : "ca_address", 
-            width : 0 
+            hidden:true
         }, 
         {
             text : "默认客户联系人", 
             dataIndex : "cc_name", 
-            width : 0
-        },{
-            text: '应收款余额',
-            dataIndex : 'cu_leftamount',
-            width : 120,
-            renderer : function(v) {
-                var arr = (v + '.').split('.');
-                var xr = (new Array(arr[1].length > 2 ? 2 : arr[1].length)).fill('0');
-                var format = '0,000.' + xr.join();
-                return Ext.util.Format.number(v, format);
-            },
+            hidden:true
         }]
     },
 

+ 2 - 2
frontend/saas-web/app/view/document/product/BasePanel.js

@@ -41,11 +41,11 @@ Ext.define('saas.view.document.product.BasePanel', {
     }, {
         xtype: 'combobox',
         name: 'pr_statuscode',
-        fieldLabel: '状态',
         queryMode: 'local',
         displayField: 'pr_status',
         valueField: 'pr_statuscode',
-        emptyText :'全部',
+        emptyText :'状态',
+        width:100,
         editable:false,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['pr_statuscode', 'pr_status'],

+ 7 - 7
frontend/saas-web/app/view/document/vendor/BasePanel.js

@@ -8,24 +8,24 @@ Ext.define('saas.view.document.vendor.BasePanel', {
         xtype : "dbfindtrigger", 
         name : "ve_code", 
         emptyText : "供应商编号", 
-        columnWidth : 0.25,
+        width:140,
     },{
         xtype : "textfield", 
         name : "ve_name", 
         emptyText : "供应商名称", 
-        columnWidth : 0.25,
+        width:140,
     },{
         xtype : "remotecombo", 
         storeUrl:'/api/document/vendorkind/getCombo',
         name : "ve_type", 
-        emptyText : "请选择供应商类型", 
-        columnWidth : 0.25,
+        emptyText : "供应商类型", 
+        width:140,
         hiddenBtn:true
     },{
         xtype : "textfield", 
         name : "ve_promisedays", 
         emptyText : "承付天数", 
-        columnWidth : 0.25,
+        width:120,
         getCondition: function(value) {
             if(value.indexOf("=")>=0||value.indexOf("<")>=0||value.indexOf(">")>=0){
                 return ' ve_promisedays '+value;
@@ -38,11 +38,11 @@ Ext.define('saas.view.document.vendor.BasePanel', {
     },{
         xtype: 'combobox',
         name: 've_statuscode',
-        fieldLabel: '状态',
         queryMode: 'local',
         displayField: 've_status',
         valueField: 've_statuscode',
-        emptyText :'全部',
+        emptyText :'状态',
+        width:100,
         editable:false,
         store: Ext.create('Ext.data.ArrayStore', {
         fields: ['ve_statuscode', 've_status'],

+ 6 - 0
frontend/saas-web/app/view/home/InfoCard.scss

@@ -40,6 +40,10 @@ $max-card-width: 235px;
             }
         }
     }
+
+    .x-toolbar-default-vertical {
+        padding: 0;
+    }
 }
 
 .x-scroller-button {
@@ -61,11 +65,13 @@ $max-card-width: 235px;
 .x-scroller-button-left {
     left: 0;
     background-image: url('images/default/arrows-left.png') !important;
+    background-position-x: 10px !important;
 }
 
 .x-scroller-button-right {
     right: 0;
     background-image: url('images/default/arrows-right.png') !important;
+    background-position-x: 4px !important;
 }
 
 .x-btn-over.x-btn-default-small.x-scroller-button-left,

+ 3 - 17
frontend/saas-web/app/view/main/Main.js

@@ -29,6 +29,7 @@ Ext.define('saas.view.main.Main', {
                 {
                     xtype: 'component',
                     reference: 'mainLogo',
+                    width: 180,
                     cls: 'main-logo-wrap',
                     html: '<div class="main-logo"><img src="resources/images/default/logo-default.png"/><div class="logo-text">优企云服</div></div>',
                     bind: {
@@ -105,11 +106,10 @@ Ext.define('saas.view.main.Main', {
                     }
                 },
                 {
-                    margin: '0 0 0 0',
+                    //margin: '0 0 0 0',
                     xtype: 'tbtext',
                     cls:'nav-realname',
                     bind: {
-                        //tooltip: '{account.realname}',
                         html: '{account.realname}'
                     },
                     style:{
@@ -143,21 +143,7 @@ Ext.define('saas.view.main.Main', {
                             iconCls:'x-fa fa-power-off',
                             handler: 'onLogout'
                         }]
-                    } ,
-                     listeners:{
-                        'mouseover':function(btn){
-                            btn.menu ? (btn.menu.isVisible() ? '' : btn.showMenu()) : '';
-                        },
-                        'mouseout':function(btn,e){
-                            window.setTimeout(function(){
-                                var cx = e.browserEvent.clientX, cy = e.browserEvent.clientY;
-                                var btnLayout = btn.el.dom.getBoundingClientRect();
-                                if(cx <= btnLayout.left || cx >= btnLayout.left+btnLayout.width || cy <= btnLayout.top) {
-                                    btn.hideMenu();
-                                }
-                            }, 10); 
-                        }
-                    } 
+                    }
                 }
             ]
         },

+ 2 - 0
frontend/saas-web/app/view/main/Navigation.js

@@ -5,6 +5,8 @@ Ext.define('saas.view.main.Navigation', {
 
     reference: 'navigationTreeList',
 
+    width: 180,
+
     navCollapsed: false,
     cls: 'x-navpanel',
 

+ 32 - 23
frontend/saas-web/app/view/stock/appropriationInOut/FormPanelController.js

@@ -178,34 +178,43 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                 }
             },           
             //放大镜赋值关系 以及 tpl模板
-            'multidbfindtrigger[name=pd_prodcode]':{
-                beforerender:function(f){
-                    Ext.apply(f,{
-                        dataUrl:'/api/document/product/list',
+            'multidbfindtrigger[name=pd_prodcode]': {
+                beforerender: function (f) {
+                    Ext.apply(f, {
+                        dataUrl: '/api/document/product/list',
                         // dataUrl:'http://localhost:9480/product/list',
                         addXtype: 'document-product-formpanel',
                         addTitle: '物料资料',
-                        dbfinds:[{
-                            from:'id',to:'pd_prodid'                          
-                        },{
-                            from:'pr_code',to:'pd_prodcode'                          
-                        },{
-                            from:'pr_detail',to:'pr_detail'
-                        },{
-                            from:'pr_spec',to:'pr_spec'
+                        dbfinds: [{
+                            from: 'id',
+                            to: 'pd_prodid',ignore:true
+                        }, {
+                            from: 'pr_code',
+                            to: 'pd_prodcode'
+                        }, {
+                            from: 'pr_detail',
+                            to: 'pr_detail'
+                        }, {
+                            from: 'pr_spec',
+                            to: 'pr_spec'
                         },{
                             from:'pr_whid',to:'pd_whid'
                         },{
                             from:'pr_whcode',to:'pd_whcode'
                         },{
                             from:'pr_whname',to:'pd_whname'
-                        }],
-                        dbtpls:[{
-                            field:'pr_code',width:100
-                        },{
-                            field:'pr_detail',width:100
                         },{
-                            field:'pr_spec',width:100
+                            from:'pr_purcprice',to:'pd_orderprice'
+                        }],
+                        dbtpls: [{
+                            field: 'pr_code',
+                            width: 100
+                        }, {
+                            field: 'pr_detail',
+                            width: 100
+                        }, {
+                            field: 'pr_spec',
+                            width: 100
                         }],
                         defaultCondition: "pr_statuscode='OPEN'",
                         dbSearchFields:[{
@@ -218,7 +227,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             },
                             allowBlank : true, 
                             columnWidth : 0.25
-                        }],                   
+                        }],                        
                         dbColumns:[{
                             "text": "物料ID",
                             "hidden": true,
@@ -259,7 +268,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             xtype: 'numbercolumn',
                             renderer : function(v) {
                                 var arr = (v + '.').split('.');
-                                var xr = (new Array(arr[1].length)).fill('0');
+                                var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
                                 var format = '0,000.' + xr.join();
                                 return Ext.util.Format.number(v, format);
                             },                            
@@ -285,13 +294,13 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                             "dataIndex": "pr_zxbzs",
                             "width": 100,
                             xtype: 'numbercolumn',
-                            align:'end'
+                            align: 'end'
                         },{
                             "text": "L/T",
                             "dataIndex": "pr_leadtime",
                             "width": 100,
                         }]
-                    }) ;   
+                    });
 
                 }
             },
@@ -355,7 +364,7 @@ Ext.define('saas.view.stock.appropriationInOut.FormPanelController', {
                 }) ;   
 
             }
-        },           
+            },           
         //放大镜赋值关系 以及 tpl模板
         'dbfindtrigger[name=pd_inwhname]':{
             beforerender:function(f){

+ 2 - 2
frontend/saas-web/app/view/stock/make/FormPanel.js

@@ -111,7 +111,7 @@ Ext.define('saas.view.stock.make.FormPanel', {
         fieldLabel : "单价",
         readOnly:true,
         editable:false,
-        decimals:8,
+        decimalPrecision:8,
         columnWidth: 0.25
     },{
         xtype : "numberfield", 
@@ -119,7 +119,7 @@ Ext.define('saas.view.stock.make.FormPanel', {
         readOnly:true,
         editable:false, 
         fieldLabel : "金额",
-        decimals:2,
+        decimalPrecision:2,
         columnWidth: 0.25
     },
     {

+ 12 - 0
frontend/saas-web/app/view/sys/config/FormPanel.js

@@ -125,6 +125,18 @@ Ext.define('saas.view.sys.config.FormPanel', {
         buttonConfig: {
             iconCls: 'x-fa fa-picture-o'
         }
+    },{  
+        bind:'{en_logo}',
+        name : "en_logo", 
+        fieldLabel : "Logo上传", 
+        allowBlank : false, 
+        columnWidth : 0.33,
+        xtype: 'filefield',
+        emptyText: '请选择图片',
+        buttonText: '',
+        buttonConfig: {
+            iconCls: 'x-fa fa-picture-o'
+        }
     },{  
         ignore:true,
         bind:'{updateTime}',

+ 4 - 0
frontend/saas-web/overrides/i18n.js

@@ -105,4 +105,8 @@ function deleteWarn(msg, fn){
  */
 function isDateString(str) {
     return (/^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/).test(str);
+}
+
+function getCurrentUse() {
+    return Ext.getCmp('mainView').getViewModel().get('account');
 }