hy 8 years ago
parent
commit
95c82fa502
100 changed files with 1795 additions and 530 deletions
  1. 14 3
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 102 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Configs.java
  3. 49 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/ConfigsController.java
  4. 26 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/ConfigsMapper.java
  5. 19 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/ConfigsService.java
  6. 101 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/ConfigsServiceImpl.java
  7. 2 1
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/EndProductServiceImpl.java
  8. 1 1
      applications/commons/commons-server/src/main/resources/application.yml
  9. 4 4
      applications/commons/commons-server/src/main/resources/i18n/messages_zh_CN.properties
  10. 184 0
      applications/commons/commons-server/src/main/resources/mapper/ConfigsMapper.xml
  11. 1 1
      applications/commons/commons-server/src/main/resources/mapper/EndProductMapper.xml
  12. 4 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java
  13. 3 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java
  14. 3 3
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BankinformationServiceImpl.java
  15. 4 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/BomServiceImpl.java
  16. 37 24
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/CustomerServiceImpl.java
  17. 2 2
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/EmployeeServiceImpl.java
  18. 15 12
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java
  19. 35 21
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorServiceImpl.java
  20. 9 1
      applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml
  21. 35 35
      applications/document/document-server/src/main/resources/mapper/ProductDetailMapper.xml
  22. 4 4
      applications/document/document-server/src/main/resources/mapper/ProductMapper.xml
  23. 9 0
      applications/document/document-server/src/main/resources/mapper/VendorMapper.xml
  24. 2 1
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/FundtransferdetailMapper.java
  25. 21 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtransfer.java
  26. 30 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othreceipts.java
  27. 18 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othspendings.java
  28. 19 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalance.java
  29. 17 0
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalance.java
  30. 59 34
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/FundtransferServiceImpl.java
  31. 18 10
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthreceiptsServiceImpl.java
  32. 23 11
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/OthspendingsServiceImpl.java
  33. 31 19
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/PaybalanceServiceImpl.java
  34. 27 14
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/RecbalanceServiceImpl.java
  35. 5 2
      applications/money/money-server/src/main/java/com/usoftchina/saas/money/service/impl/VerificationServiceImpl.java
  36. 1 1
      applications/money/money-server/src/main/resources/mapper/BankinformationMapper.xml
  37. 19 1
      applications/money/money-server/src/main/resources/mapper/FundtransferMapper.xml
  38. 1 1
      applications/money/money-server/src/main/resources/mapper/FundtransferdetailMapper.xml
  39. 18 1
      applications/money/money-server/src/main/resources/mapper/OthreceiptsMapper.xml
  40. 23 7
      applications/money/money-server/src/main/resources/mapper/OthspendingsMapper.xml
  41. 18 1
      applications/money/money-server/src/main/resources/mapper/PaybalanceMapper.xml
  42. 18 1
      applications/money/money-server/src/main/resources/mapper/RecbalanceMapper.xml
  43. 5 0
      applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/PurchaseDTO.java
  44. 1 1
      applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/PurchaseDetailDTO.java
  45. 2 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/ProdInOutMapper.java
  46. 4 0
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  47. 4 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/Purchase.java
  48. 4 2
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/PurchaseList.java
  49. 10 6
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/ProdInOutServiceImpl.java
  50. 20 18
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  51. 4 4
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml
  52. 21 2
      applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml
  53. 67 8
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  54. 11 6
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/ProdInOutServiceImpl.java
  55. 7 3
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  56. 1 4
      applications/sale/sale-server/src/main/resources/mapper/SaleMapper.xml
  57. 4 2
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdInOutDTO.java
  58. 2 4
      applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOut.java
  59. 2 4
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/mapper/ProdInOutMapper.java
  60. 55 35
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java
  61. 9 3
      applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/ProdInOutServiceImpl.java
  62. 10 7
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutListMapper.xml
  63. 62 99
      applications/storage/storage-server/src/main/resources/mapper/ProdInOutMapper.xml
  64. 4 0
      base-servers/account/account-dto/pom.xml
  65. 39 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyDTO.java
  66. 41 5
      base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRegDTO.java
  67. 12 0
      base-servers/account/account-server/pom.xml
  68. 2 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/AccountApplication.java
  69. 9 2
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java
  70. 12 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/CompanyController.java
  71. 7 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java
  72. 7 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java
  73. 28 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Company.java
  74. 4 1
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java
  75. 17 0
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java
  76. 21 2
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java
  77. 29 2
      base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java
  78. 11 0
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  79. 32 4
      base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml
  80. 3 4
      base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/cookie/CookieInfo.java
  81. 20 8
      base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java
  82. 13 13
      base-servers/file/file-api/src/main/java/com/usoftchina/saas/file/api/FileApi.java
  83. 2 0
      base-servers/file/file-server/src/main/java/com/usoftchina/saas/file/FileApplication.java
  84. 16 16
      base-servers/file/file-server/src/main/java/com/usoftchina/saas/file/controller/FileController.java
  85. 1 6
      base-servers/gateway-server/src/main/resources/application.yml
  86. 10 5
      base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/api/SocketMessageApi.java
  87. 23 8
      base-servers/socket/socket-server/src/main/java/com/usoftchina/saas/socket/controller/MessageController.java
  88. 1 1
      framework/server-starter/src/main/java/com/usoftchina/saas/server/ServerAutoConfiguration.java
  89. 30 1
      framework/server-starter/src/main/java/com/usoftchina/saas/server/error/ServletErrorUtils.java
  90. 1 1
      framework/server-starter/src/main/java/com/usoftchina/saas/server/error/UnCaughtErrorFilter.java
  91. 7 8
      frontend/saas-portal-web/src/css/main.css
  92. 0 0
      frontend/saas-portal-web/src/img/gongneng/xiao shou 3@3x.png
  93. 7 7
      frontend/saas-portal-web/src/index.html
  94. 2 2
      frontend/saas-web/app/Application.scss
  95. 29 0
      frontend/saas-web/app/model/report/Purchase.js
  96. 2 2
      frontend/saas-web/app/util/BaseUtil.js
  97. 4 0
      frontend/saas-web/app/util/FormUtil.js
  98. 1 1
      frontend/saas-web/app/view/core/chart/ChartBase.js
  99. 1 0
      frontend/saas-web/app/view/core/form/ConDateField.js
  100. 11 2
      frontend/saas-web/app/view/core/form/FormPanel.js

+ 14 - 3
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -30,21 +30,28 @@ public enum BizExceptionCode implements BaseExceptionCode {
     BIZ_RELDELETE_UPDATEPROD(79307,"存在关联单据,不允许更新"),
     BIZ_RELDELETE_DELETEPROD(79308,"存在关联单据,不允许删除"),
     BIZ_PRODWHCODE_REPEAT(79309, "明细仓库重复"),
+    BIZ_UNENDPRODUCT(79310,"系统还未结账,不能反结账"),
     NO_OPRATIONDATA(79400,"无可操作单据"),
     BOM_SAVE(79401, "产品编号+版本号已存在"),
     REPEAT_NAME(79501, "名称重复"),
     REPEAT_CODE(79502, "编号重复"),
+    REPEAT_CUSTOMERCODE(79503, "客户名称或编号重复"),
+    REPEAT_TEL(79504, "电话号码重复"),
     NO_DATA(79998, "未找到数据"),
     ILLEGAL_ID(79999, "id不正确"),
     PRODUCT_HAS_WAREHOUSE(79502, "存在物料默认仓库资料为该仓库资料,无法删除"),
     PRODUCTWH_HAS_WAREHOUSE(79503, "该仓库资料存在库存,无法删除"),
     ACCOUNT_EXISTS(79503, "账号已存在"),
+    DEAL_FAILED(79800, "编号:<u>%s</u>处理失败,%s"),
+    USING_EXISTS(79504, ""),
 
 
 
     //采购 70000-71999
     PURCCHECKIN_POST_ERROR(70000,""),
-    PURCHASE_UNAUDIT_ERROR(72006,"采购订单已转采购验收单,无法反审核"),
+    PURCHASE_UNAUDIT_ERROR(71001,"采购订单已转采购验收单,无法反审核"),
+    PURCHASE_DETAIL_OVERNUM(70001, "明细行数量超过来源采购验收单明细行数量"),
+    PURCHASE_ORDER_HASAUDIT(70002, "存在已审核单据,单据编号:%s"),
 
 
     //销售
@@ -56,19 +63,23 @@ public enum BizExceptionCode implements BaseExceptionCode {
     SALEOUT_POSTSTATUS_ERROR(72004,"当前单据状态无法进行此操作。"),
     SALEOUT_POST_ERROR(72005,""),
     SALEOUT_UNAUDIT_ERROR(72006,"销售订单已转出货单,无法反审核"),
+    SALE_ORDER_HASAUDIT(72003, "存在已审核单据,单据编号:%s"),
 
     //资金
     PAYBALANCE_OUTNOWBALANCE(74001,"本次核销金额不能大于未核销金额"),
     PAYBALANCE_UNIQUESOURCECODE(74002, "保存失败!不能选择重复的源单"),
-
+    PAYBALANCE_NOWAMOUNT_POSITIVE(74005, "单据类型为<u>%s</u>的单据,核销金额必须为正数"),
+    PAYBALANCE_NOWAMOUNT_NEGATIVE(74005, "单据类型为<u>%s</u>的单据,核销金额必须为负数"),
     RECALANCE_OUTNOWBALANCE(74003,"本次核销金额不能大于未核销金额"),
-
+    BEFORE_UNAUDIT(74006, "单据:<u>%s</u>未审核,无法反审核"),
     BANK_AMOUNT_NOTENOUGH(74004, "资金账号不足"),
 
 
 
     //库存
     EMPTY_DATA(76100,"数据为空,请填写后再保存"),
+    UNENOUGH_DETAIL_STOCK(76300, "行%s库存不足"),
+    UNENOUGH_STOCK(76400, "%s :库存不足"),
     STORAGE_POST_ERROR(76200,""),
     ;
     private int code;

+ 102 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/Configs.java

@@ -0,0 +1,102 @@
+package com.usoftchina.saas.commons.po;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.util.Date;
+
+/** 系统参数
+ * @author: guq
+ * @create: 2018-11-16 11:19
+ **/
+public class Configs {
+
+    private Long id;
+
+    private String code;
+
+    private String description;
+
+    private String data;
+
+    private Long companyId;
+
+    private String creatorName;
+
+    private Integer creatorId;
+
+    private Date createTime;
+
+    private String updaterName;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code == null ? null : code.trim();
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description == null ? null : description.trim();
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data == null ? null : data.trim();
+    }
+
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCreatorName() {
+        return creatorName;
+    }
+
+    public void setCreatorName(String creatorName) {
+        this.creatorName = creatorName == null ? null : creatorName.trim();
+    }
+
+    public Integer getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(Integer creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdaterName() {
+        return updaterName;
+    }
+
+    public void setUpdaterName(String updaterName) {
+        this.updaterName = updaterName == null ? null : updaterName.trim();
+    }
+}

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

@@ -0,0 +1,49 @@
+package com.usoftchina.saas.commons.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.po.Configs;
+import com.usoftchina.saas.commons.service.ConfigsService;
+import com.usoftchina.saas.page.PageRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2018-11-16 10:05
+ **/
+@RestController
+@RequestMapping("/configs")
+public class ConfigsController {
+
+    @Autowired
+    private ConfigsService configsService;
+
+    @GetMapping("/list")
+    public Result<Configs> getListData(PageRequest page, ListReqDTO req) {
+        PageInfo<Configs> listData = configsService.getListData(page, req);
+        return Result.success(listData);
+    }
+
+    @GetMapping("/getConfigByCode")
+    public Result<Configs> getConfigByCode(String code) {
+        Configs data = configsService.getConfigByCode(code);
+        return Result.success(data);
+    }
+
+    @PostMapping("/save")
+    public Result<DocBaseDTO> save(Configs data) {
+        DocBaseDTO baseDTO = configsService.save(data);
+        return Result.success(baseDTO);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody List<Configs> data) {
+        configsService.update(data);
+        return Result.success();
+    }
+}

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

@@ -0,0 +1,26 @@
+package com.usoftchina.saas.commons.mapper;
+
+import com.usoftchina.saas.commons.po.Configs;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ConfigsMapper {
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(Configs record);
+
+    int insertSelective(Configs record);
+
+    Configs selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(Configs record);
+
+    int updateByPrimaryKey(Configs record);
+
+    List<Configs> selectByCondition(@Param("con") String con, @Param("companyId") Long companyId);
+
+    void updateCreator(@Param("userId") Long userId, @Param("userName") String userName, @Param("id") Long id);
+
+    void updateByCodeSelective(Configs con);
+}

+ 19 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/ConfigsService.java

@@ -0,0 +1,19 @@
+package com.usoftchina.saas.commons.service;
+
+import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.po.Configs;
+import com.usoftchina.saas.page.PageRequest;
+
+import java.util.List;
+
+public interface ConfigsService {
+    PageInfo getListData(PageRequest page, ListReqDTO req);
+
+    Configs getConfigByCode(String code);
+
+    DocBaseDTO save(Configs data);
+
+    void update(List<Configs> data);
+}

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

@@ -0,0 +1,101 @@
+package com.usoftchina.saas.commons.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.commons.dto.DocBaseDTO;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.commons.mapper.ConfigsMapper;
+import com.usoftchina.saas.commons.po.Configs;
+import com.usoftchina.saas.commons.service.ConfigsService;
+import com.usoftchina.saas.commons.service.MessageLogService;
+import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.exception.BizException;
+import com.usoftchina.saas.page.PageDefault;
+import com.usoftchina.saas.page.PageRequest;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2018-11-16 11:35
+ **/
+@Service
+public class ConfigsServiceImpl implements ConfigsService{
+
+    @Autowired
+    private ConfigsMapper configsMapper;
+    @Autowired
+    private MessageLogService messageLogService;
+
+
+    @Override
+    public PageInfo getListData(@PageDefault(size = 10) PageRequest page, ListReqDTO req) {
+        Long companyId = BaseContextHolder.getCompanyId();
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        List<Configs> list = configsMapper.selectByCondition(req.getFinalCondition(), companyId);
+        //取分页信息
+        PageInfo<Configs> pageInfo = new PageInfo<Configs>(list);
+        return pageInfo;
+    }
+
+    @Override
+    public Configs getConfigByCode(String code) {
+        if (StringUtils.isEmpty(code)) {
+            return null;
+        }
+        List<Configs> list = configsMapper.selectByCondition(code, BaseContextHolder.getCompanyId());
+        if (null != list && list.size() > 0) {
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Override
+    public DocBaseDTO save(Configs formdata) {
+        if (null == formdata){
+            throw new BizException(50000, "数据为空,请填写后再保存");
+        }
+        //公司ID
+        Long companyId = BaseContextHolder.getCompanyId();
+        //人员Id
+        Long userId = BaseContextHolder.getUserId();
+        String name = BaseContextHolder.getUserName();
+        //返回对象
+        DocBaseDTO baseDTO = null;
+        Long id = formdata.getId();
+
+        //判断更新与保存动作
+        if (StringUtils.isEmpty(id) || "0".equals(id.toString())) {
+            //插入操作
+            formdata.setCompanyId(companyId);
+            configsMapper.insertSelective(formdata);
+            id = formdata.getId();
+            configsMapper.updateCreator(userId, name, id);
+            baseDTO = new DocBaseDTO(id, formdata.getCode(), "Configs");
+            //日志记录
+            messageLogService.save(baseDTO);
+            return baseDTO;
+        }
+
+        //更新操作
+        configsMapper.updateByPrimaryKeySelective(formdata);
+        baseDTO = new DocBaseDTO(id, formdata.getCode(), "Configs");
+        //日志
+        messageLogService.update(baseDTO);
+        return baseDTO;
+    }
+
+    @Override
+    public void update(List<Configs> data) {
+        if (StringUtils.isEmpty(data)) {
+            return;
+        }
+        for (Configs con : data) {
+            con.setCompanyId(BaseContextHolder.getCompanyId());
+            configsMapper.updateByCodeSelective(con);
+        }
+    }
+}

+ 2 - 1
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/EndProductServiceImpl.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.commons.dto.MessagelogDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.commons.mapper.EndProductMapper;
 import com.usoftchina.saas.commons.mapper.MessagelogMapper;
 import com.usoftchina.saas.commons.po.Operation;
@@ -72,7 +73,7 @@ public class EndProductServiceImpl implements EndProductService {
     public void unEndAccount() {
         String period = endProductMapper.selectUnPeriod(BaseContextHolder.getCompanyId());
         if (StringUtils.isEmpty(period)){
-            throw new BizException(79306,"系统还未结账,不能反结账");
+            throw new BizException(BizExceptionCode.BIZ_UNENDPRODUCT);
         }else{
             endProductMapper.updatePeriodStatus(0L, period, BaseContextHolder.getCompanyId());
             messageLogService.customizeLog(generateMsgObj(Long.parseLong(period)), Operation.UNENDPRODUCT);

+ 1 - 1
applications/commons/commons-server/src/main/resources/application.yml

@@ -53,7 +53,7 @@ eureka:
   client:
     registryFetchIntervalSeconds: 5
     serviceUrl:
-       defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8510/eureka/
+      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@192.168.0.181:8510/eureka/
 server:
   port: 8920
   tomcat:

+ 4 - 4
applications/commons/commons-server/src/main/resources/i18n/messages_zh_CN.properties

@@ -116,7 +116,7 @@ msg.getBill=\u83b7\u53d6\u53d1\u7968\u660e\u7ec6
 msg.getARBill=\u83b7\u53d6\u5e94\u6536\u53d1\u7968
 msg.getAPBill=\u83b7\u53d6\u5e94\u4ed8\u53d1\u7968
 msg.getSuccess=\u83b7\u53d6\u6210\u529f
-msg.endProdudct=\u8bb0\u8d26\u64cd\u4f5c
-msg.endProdudctSuccess=\u8bb0\u8d26\u6210\u529f
-msg.unEndProduct=\u53cd\u8bb0\u8d26\u64cd\u4f5c
-msg.unEndProductSuccess=\u53cd\u8bb0\u8d26\u6210\u529f
+msg.endProdudct=\u7ed3\u8d26\u64cd\u4f5c
+msg.endProdudctSuccess=\u7ed3\u8d26\u6210\u529f
+msg.unEndProduct=\u53cd\u7ed3\u8d26\u64cd\u4f5c
+msg.unEndProductSuccess=\u53cd\u7ed3\u8d26\u6210\u529f

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

@@ -0,0 +1,184 @@
+<?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.commons.mapper.ConfigsMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.commons.po.Configs" >
+    <id column="id" property="id" jdbcType="INTEGER" />
+    <result column="code" property="code" jdbcType="VARCHAR" />
+    <result column="description" property="description" jdbcType="VARCHAR" />
+    <result column="data" property="data" jdbcType="VARCHAR" />
+    <result column="companyId" property="companyId" jdbcType="INTEGER" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    id, code, description, data, companyId, creatorName, creatorId, createTime, updaterName
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select
+    <include refid="Base_Column_List" />
+    from configs
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from configs
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.usoftchina.saas.commons.po.Configs" >
+    insert into configs (id, code, description,
+    data, companyId, creatorName,
+    creatorId, createTime, updaterName
+    )
+    values (#{id,jdbcType=INTEGER}, #{code,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR},
+    #{data,jdbcType=VARCHAR}, #{companyId,jdbcType=INTEGER}, #{creatorName,jdbcType=VARCHAR},
+    #{creatorId,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updaterName,jdbcType=VARCHAR}
+    )
+  </insert>
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.commons.po.Configs" >
+    insert into configs
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="id != null" >
+        id,
+      </if>
+      <if test="code != null" >
+        code,
+      </if>
+      <if test="description != null" >
+        description,
+      </if>
+      <if test="data != null" >
+        data,
+      </if>
+      <if test="companyId != null" >
+        companyId,
+      </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="creatorId != null" >
+        creatorId,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
+      <if test="updaterName != null" >
+        updaterName,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="id != null" >
+        #{id,jdbcType=INTEGER},
+      </if>
+      <if test="code != null" >
+        #{code,jdbcType=VARCHAR},
+      </if>
+      <if test="description != null" >
+        #{description,jdbcType=VARCHAR},
+      </if>
+      <if test="data != null" >
+        #{data,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="creatorId != null" >
+        #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updaterName != null" >
+        #{updaterName,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.commons.po.Configs" >
+    update configs
+    <set >
+      <if test="code != null" >
+        code = #{code,jdbcType=VARCHAR},
+      </if>
+      <if test="description != null" >
+        description = #{description,jdbcType=VARCHAR},
+      </if>
+      <if test="data != null" >
+        data = #{data,jdbcType=VARCHAR},
+      </if>
+      <if test="companyId != null" >
+        companyId = #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="creatorName != null" >
+        creatorName = #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="creatorId != null" >
+        creatorId = #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null" >
+        createTime = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updaterName != null" >
+        updaterName = #{updaterName,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.commons.po.Configs" >
+    update configs
+    set code = #{code,jdbcType=VARCHAR},
+    description = #{description,jdbcType=VARCHAR},
+    data = #{data,jdbcType=VARCHAR},
+    companyId = #{companyId,jdbcType=INTEGER},
+    creatorName = #{creatorName,jdbcType=VARCHAR},
+    creatorId = #{creatorId,jdbcType=INTEGER},
+    createTime = #{createTime,jdbcType=TIMESTAMP},
+    updaterName = #{updaterName,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+
+  <select id="selectByCondition" resultMap="BaseResultMap">
+    select  *  from configs
+    <where>
+      <if test="con != null">
+        ${con}
+      </if>
+      <if test="companyId != null">
+        and  companyId = #{companyId}
+      </if>
+    </where>
+    order by id desc
+  </select>
+
+  <update id="updateCreator">
+    update configs set creatorId = #{userId} , creatorName=#{userName} where id=#{id}
+  </update>
+
+  <update id="updateByCodeSelective" parameterType="com.usoftchina.saas.commons.po.Configs" >
+    update configs
+    <set >
+      <if test="description != null" >
+        description = #{description,jdbcType=VARCHAR},
+      </if>
+      <if test="data != null" >
+        data = #{data,jdbcType=VARCHAR},
+      </if>
+      <if test="creatorName != null" >
+        creatorName = #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="creatorId != null" >
+        creatorId = #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null" >
+        createTime = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updaterName != null" >
+        updaterName = #{updaterName,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where code = #{code,jdbcType=VARCHAR} and companyid = #{companyId}
+  </update>
+
+</mapper>

+ 1 - 1
applications/commons/commons-server/src/main/resources/mapper/EndProductMapper.xml

@@ -22,7 +22,7 @@
         <result column="ml_keyvalue" property="ml_keyvalue" jdbcType="INTEGER" />
     </resultMap>
     <select id="getListData" resultMap="MsgResult">
-        SELECT * FROM MESSAGELOG WHERE ML_CALLER='EndProduct' AND COMPANYID=#{companyId} AND ml_result like '%记账成功' ORDER BY ML_ID DESC
+        SELECT * FROM MESSAGELOG WHERE ML_CALLER='EndProduct' AND COMPANYID=#{companyId} AND ml_result like '%结账成功' ORDER BY ML_ID DESC
     </select>
 
     <select id="endProduct" parameterMap="spParamMap" statementType="CALLABLE">

+ 4 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/CustomerMapper.java

@@ -4,6 +4,8 @@ import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 import com.usoftchina.saas.document.entities.Customer;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Map;
+
 public interface CustomerMapper extends CommonBaseMapper<Customer> {
     int deleteByPrimaryKey(Long cu_id);
 
@@ -27,4 +29,6 @@ public interface CustomerMapper extends CommonBaseMapper<Customer> {
     int validNameAndCodeWhenUpdate(Customer record);
 
     int validFinish(@Param("id") Long id,@Param("companyId") Long companyId);
+
+    void check(Map<String, Object> map);
 }

+ 3 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorMapper.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.document.entities.VendorList;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 public interface VendorMapper extends CommonBaseMapper<Vendor> {
 
@@ -28,4 +29,6 @@ public interface VendorMapper extends CommonBaseMapper<Vendor> {
     int getCountByName(@Param("name") String name, @Param("companyId") Long companyId);
 
     int validFinish(@Param("id") Long id,@Param("companyId") Long companyId);
+
+    void check(Map<String, Object> map);
 }

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

@@ -55,11 +55,11 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
         String dateString = date2String(date, "yyyyMMdd");
         int ym = Integer.parseInt(dateString);
 
-        String date1 = date2String(date, "yyyymm");
+        String date1 = date2String(date, "yyyyMM");
         date1 = date1 + "01 00:00:00";
         Date d = null;
         try {
-            d = string2Date(date1, "yyyy-mm-dd hh:mm:ss");
+            d = string2Date(date1, "yyyy-MM-dd hh:mm:ss");
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -138,7 +138,7 @@ public class BankinformationServiceImpl extends CommonBaseServiceImpl<Bankinform
      */
     public static Date string2Date(String dateStr, String format) throws Exception {
         SimpleDateFormat sdf = new SimpleDateFormat(format);
-        if (dateStr == null) {
+        if (dateStr != null) {
             return sdf.parse(dateStr);
         }
         return null;

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

@@ -228,7 +228,8 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
             try{
                 close(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -241,7 +242,8 @@ public class BomServiceImpl extends CommonBaseServiceImpl<BomMapper, Bom> implem
             try{
                 open(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();

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

@@ -28,9 +28,7 @@ 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;
+import java.util.*;
 
 /**
  * Created by zdw
@@ -55,6 +53,8 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     private MaxnumberService maxnumberService;
     @Autowired
     private SubledgerMapper subledgerMapper;
+    @Autowired
+    private CustomerMapper customerMapper;
 
 
     @Override
@@ -99,7 +99,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     @Transactional
     public DocBaseDTO saveFormData(CustomerFormDTO data) {
         if (null == data || null == data.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
@@ -139,7 +139,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             //检查名称和编号
             int count = getMapper().validNameAndCodeWhenInsert(customer);
             if (count>0) {
-                throw new BizException(500, "客户名称或编号重复");
+                throw new BizException(BizExceptionCode.REPEAT_CUSTOMERCODE);
             }
             //插入操作
             getMapper().insertSelective(customer);
@@ -174,7 +174,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             //检查名称和编号
             int count = getMapper().validNameAndCodeWhenUpdate(customer);
             if (count > 0) {
-                throw new BizException(500, "客户名称或编号重复");
+                throw new BizException(BizExceptionCode.REPEAT_CUSTOMERCODE);
             }
 
             //检查期初日期是否已结转
@@ -253,11 +253,11 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
             subledger.setSl_vendid(0);
             subledger.setSl_custid(Math.toIntExact(customer.getId()));
             subledger.setCompanyId(BaseContextHolder.getCompanyId());
-            String dates = date2String(customer.getCu_begindate(), "yyyy-mm");
+            String dates = date2String(customer.getCu_begindate(), "yyyy-MM");
             dates = dates + "-01";
             Date date = null;
             try {
-                date = string2Date(dates, "yyyy-mm-dd");
+                date = string2Date(dates, "yyyy-MM-dd");
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -294,17 +294,28 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     private void singleDelete(Long id) {
         if (null!=id) {
             DocBaseDTO docBaseDTO = getBaseDTOById(id);
-            //主表删除
-            getMapper().deleteByPrimaryKey(id);
-            //从表删除
-            customercontactMapper.deleteByFK(id);
-            customeraddressMapper.deleteByFK(id);
-
-            //删除中间表
-            subledgerMapper.deleteCustomer("期初余额", "期初余额", Math.toIntExact(id));
-
-            //日志
-            messageLogService.delete(docBaseDTO);
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("v_id",id);
+            map.put("v_code", docBaseDTO.getCode());
+            map.put("v_type","cust");
+            map.put("v_res","");
+            customerMapper.check(map);
+            Object result =  map.get("v_res");
+            if(!StringUtils.isEmpty(result)){
+                throw new BizException(BizExceptionCode.USING_EXISTS.getCode(),result.toString());
+            }else{
+                //主表删除
+                getMapper().deleteByPrimaryKey(id);
+                //从表删除
+                customercontactMapper.deleteByFK(id);
+                customeraddressMapper.deleteByFK(id);
+
+                //删除中间表
+                subledgerMapper.deleteCustomer("期初余额", "期初余额", Math.toIntExact(id));
+
+                //日志
+                messageLogService.delete(docBaseDTO);
+            }
         }
     }
 
@@ -339,7 +350,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     }
 
     @Transactional
-    private DocBaseDTO singleClose(Long id) {
+    public DocBaseDTO singleClose(Long id) {
         DocBaseDTO docBaseDTO = null;
         if (null!=id) {
             Customer customer = getMapper().selectByPrimaryKey(id);
@@ -374,7 +385,7 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
     }
 
     @Transactional
-    private DocBaseDTO singleOpen(Long id) {
+    public DocBaseDTO singleOpen(Long id) {
         DocBaseDTO docBaseDTO = null;
         if (null!=id) {
             Customer customer = getMapper().selectByPrimaryKey(id);
@@ -482,10 +493,11 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
      */
     public static Date string2Date(String dateStr, String format) throws Exception {
         SimpleDateFormat sdf = new SimpleDateFormat(format);
-        if (dateStr == null) {
+        if (dateStr != null) {
             return sdf.parse(dateStr);
+        }else {
+            return null;
         }
-        return null;
     }
 
     /**
@@ -499,8 +511,9 @@ public class CustomerServiceImpl extends CommonBaseServiceImpl<CustomerMapper, C
         SimpleDateFormat sdf = new SimpleDateFormat(format);
         if (date != null) {
             return sdf.format(date);
+        }else {
+            return null;
         }
-        return null;
     }
 
 }

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

@@ -73,7 +73,7 @@ public class EmployeeServiceImpl extends CommonBaseServiceImpl<EmployeeMapper, E
             //检查电话号码
             int count = getMapper().validatePhoneWhenInsert(employee.getEm_mobile(),BaseContextHolder.getCompanyId());
             if (count>0) {
-                throw new BizException(500, "电话号码重复");
+                throw new BizException(BizExceptionCode.REPEAT_TEL);
             }
             getMapper().insertSelective(employee);
             docBaseDTO = generateMsgObj(employee.getId(), code);
@@ -85,7 +85,7 @@ public class EmployeeServiceImpl extends CommonBaseServiceImpl<EmployeeMapper, E
             //检查电话号码
             int count = getMapper().validatePhoneWhenUpdate(employee.getEm_mobile(),employee.getId(),BaseContextHolder.getCompanyId());
             if (count>0) {
-                throw new BizException(500, "电话号码重复");
+                throw new BizException(BizExceptionCode.REPEAT_TEL);
             }
             getMapper().updateByPrimaryKeySelective(employee);
             docBaseDTO = generateMsgObj(employee.getId(), employee.getEm_code());

+ 15 - 12
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/ProductServiceImpl.java

@@ -2,6 +2,7 @@ package com.usoftchina.saas.document.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
@@ -113,7 +114,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         }else{
             String oldCode = getMapper().getCodeById(product.getId());
             if (!product.getPr_code().equals(oldCode)){
-                validEnableUpdate(product.getId());
+                validEnableUpdateCode(product.getId());
             }
             //物料发生过除库存初始化外的出入库单时,不能新增,修改,删除
             validProductOperation(product.getId(), BizExceptionCode.BIZ_RELDELETE_UPDATEPROD);
@@ -123,8 +124,9 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
                 //找到原始单据,反过账并删除
                 String inoutCode = getMapper().selectProdIOCode(product.getPr_code(), BaseContextHolder.getCompanyId(), "库存初始化");
                 post(inoutCode, "反过账");
-                getMapper().deleteProdIOByCode(inoutCode, BaseContextHolder.getCompanyId());
                 getMapper().deleteProdIODetailByCode(inoutCode, BaseContextHolder.getCompanyId());
+                getMapper().deleteProdIOByCode(inoutCode, BaseContextHolder.getCompanyId());
+
                 //此种情况不可能发生明细行数量,只会发生明细行数据修改/新增明细行
                 //a.更新明细行数据
                 List<ProductDetail> insertItems = new ArrayList<ProductDetail>();
@@ -226,7 +228,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             List<ProdIODetail> insertItems = new ArrayList<ProdIODetail>();
             //生成库存初始化单据明细表
             for(ProductDetail productDetail : productDetailList){
-                ProdIODetail prodIODetail = generateProdIODetail(product, productDetail);
+                ProdIODetail prodIODetail = generateProdIODetail(product, productDetail, inoutCode, pi_id);
                 insertItems.add(prodIODetail);
             }
             //明细插入
@@ -253,7 +255,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         }else if ("反过账".equals(type)){
             warehouseService.unPost(map);
         }
-        if (StringUtils.isEmpty(map.get("result"))){
+        if (!StringUtils.isEmpty(map.get("result"))){
             throw new BizException(76203, map.get("result").toString());
         }
     }
@@ -264,11 +266,11 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      * @param productDetail
      * @return
      */
-    private ProdIODetail generateProdIODetail(Product product, ProductDetail productDetail){
+    private ProdIODetail generateProdIODetail(Product product, ProductDetail productDetail, String inoutCode, Long pi_id){
         ProdIODetail prodIODetail = new ProdIODetail();
         prodIODetail.setPd_piclass("库存初始化");
-        prodIODetail.setPd_inoutno(product.getPr_code());
-        prodIODetail.setPd_piid(product.getId());
+        prodIODetail.setPd_inoutno(inoutCode);
+        prodIODetail.setPd_piid(pi_id);
         prodIODetail.setPd_pdno(productDetail.getPd_detno());
         prodIODetail.setPd_ordercode(product.getPr_code());         //订单号 -> 物料编号
         prodIODetail.setPd_orderdetno(productDetail.getPd_detno()); //订单序号 -> 物料明细序号
@@ -288,7 +290,6 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
 
     @Override
     public DocBaseDTO close(Long id) {
-        validEnableUpdate(id);
         DocBaseDTO docBaseDTO = null;
         if(id != null && id > 0){
             String code = getMapper().getCodeById(id);
@@ -343,7 +344,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             try{
                 close(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -356,7 +358,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
             try{
                 open(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -411,7 +414,7 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
      * 校验是否存在关联单据,不存在时才允许更新物料编号
      * @param id
      */
-    private void validEnableUpdate(Long id){
+    private void validEnableUpdateCode(Long id){
         int count = 0;
         //采购
         count = getMapper().getCountFromPurc(id, BaseContextHolder.getCompanyId());
@@ -477,8 +480,8 @@ public class ProductServiceImpl extends CommonBaseServiceImpl<ProductMapper, Pro
         String inoutCode = getMapper().selectProdIOCode(prCode, BaseContextHolder.getCompanyId(), "库存初始化");
         if (!StringUtils.isEmpty(inoutCode)) {
             post(inoutCode, "反过账");
-            getMapper().deleteProdIOByCode(inoutCode, BaseContextHolder.getCompanyId());
             getMapper().deleteProdIODetailByCode(inoutCode, BaseContextHolder.getCompanyId());
+            getMapper().deleteProdIOByCode(inoutCode, BaseContextHolder.getCompanyId());
         }
 
         productDetailMapper.deleteByPrimaryKey(id);

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

@@ -2,6 +2,7 @@ package com.usoftchina.saas.document.service.impl;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
@@ -27,11 +28,10 @@ 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.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author chenwei
@@ -48,6 +48,8 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
     private MaxnumberService maxnumberService;
     @Autowired
     private SubledgerMapper subledgerMapper;
+    @Autowired
+    private VendorMapper vendorMapper;
 
     @Override
     public PageInfo<VendorDTO> getVendorsByCondition(PageRequest page, ListReqDTO listReqDTO) {
@@ -108,7 +110,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
     public DocBaseDTO saveFormData(VendorListDTO vendorListDTO) {
         Long companyId = BaseContextHolder.getCompanyId();
         if (null == vendorListDTO || null == vendorListDTO.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         Vendor main = vendorListDTO.getMain();
         String code = null;
@@ -118,11 +120,11 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             code = pushMaxnubmer(main.getVe_code(), main.getId());
             int count = getMapper().getCountByCode(code, companyId);
             if(count > 0){
-                throw new BizException(500, "编号重复!");
+                throw new BizException(BizExceptionCode.REPEAT_NAME);
             }
             count = getMapper().getCountByName(main.getVe_name(), companyId);
             if (count > 0){
-                throw new BizException(500, "名称重复!");
+                throw new BizException(BizExceptionCode.REPEAT_NAME);
             }
             //保存主表信息
             main.setVe_code(code);
@@ -154,13 +156,13 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             int count = getMapper().getCountByCode(code, companyId);
             if (!code.equals(oldVendor.getVe_code())){
                 if (count > 0){
-                    throw new BizException(500, "编号重复!");
+                    throw new BizException(BizExceptionCode.REPEAT_CODE);
                 }
             }
             if (!main.getVe_name().equals(oldVendor.getVe_name())){
                 count = getMapper().getCountByName(main.getVe_name(), companyId);
                 if (count > 0){
-                    throw new BizException(500, "名称重复!");
+                    throw new BizException(BizExceptionCode.REPEAT_CODE);
                 }
             }
 
@@ -221,11 +223,11 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             subledger.setSl_vendid(Math.toIntExact(main.getId()));
             subledger.setSl_custid(0);
             subledger.setCompanyId(BaseContextHolder.getCompanyId());
-            String dates = date2String(main.getVe_begindate(), "yyyy-mm");
+            String dates = date2String(main.getVe_begindate(), "yyyy-MM");
             dates = dates + "-01";
             Date date = null;
             try {
-                date = string2Date(dates, "yyyy-mm-dd");
+                date = string2Date(dates, "yyyy-MM-dd");
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -257,14 +259,24 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
     @Override
     public void deleteById(Long id) {
         if(id != null && id > 0){
-            getMapper().deleteByPrimaryKey(id);
-            vendorcontactMapper.deleteByFK(id);
-            String code = getMapper().getCodeById(id, BaseContextHolder.getCompanyId());
-
-            //删除中间表
-            subledgerMapper.deleteVendor("期初余额", "期初余额", Math.toIntExact(id));
-            //记录LOG
-            messageLogService.delete(generateMsgObj(id, code));
+            String code = getMapper().getCodeById(id, new Long(1));
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put("v_id",id);
+            map.put("v_code", code);
+            map.put("v_type","vend");
+            map.put("v_res","");
+            vendorMapper.check(map);
+            Object result =  map.get("v_res");
+            if(!StringUtils.isEmpty(result)){
+                throw new BizException(BizExceptionCode.USING_EXISTS.getCode(),result.toString());
+            }else{
+                getMapper().deleteByPrimaryKey(id);
+                vendorcontactMapper.deleteByFK(id);
+                //删除中间表
+                subledgerMapper.deleteVendor("期初余额", "期初余额", Math.toIntExact(id));
+                //记录LOG
+                messageLogService.delete(generateMsgObj(id, code));
+            }
         }
     }
 
@@ -332,7 +344,8 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             try{
                 close(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -345,7 +358,8 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
             try{
                 open(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -420,7 +434,7 @@ public class VendorServiceImpl extends CommonBaseServiceImpl<VendorMapper, Vendo
      */
     public static Date string2Date(String dateStr, String format) throws Exception {
         SimpleDateFormat sdf = new SimpleDateFormat(format);
-        if (dateStr == null) {
+        if (dateStr != null) {
             return sdf.parse(dateStr);
         }
         return null;

+ 9 - 1
applications/document/document-server/src/main/resources/mapper/CustomerMapper.xml

@@ -391,7 +391,15 @@
   select count(1) from periodsdetail where pd_status=99 and pd_detno=(select DATE_FORMAT(cu_begindate,'%Y%m') from customer where cu_id =#{id})
   and companyId =#{companyId};
   </select>
-
+  <select id="check" parameterMap="checkParamMap" statementType="CALLABLE">
+        CALL SP_LIMITBASE(?, ?, ?, ?)
+    </select>
+  <parameterMap id="checkParamMap" type="java.util.Map">
+    <parameter property="v_type" jdbcType="VARCHAR" mode="IN" />
+    <parameter property="v_id" jdbcType="INTEGER" mode="IN" />
+    <parameter property="v_code" jdbcType="VARCHAR" mode="IN" />
+    <parameter property="v_res" jdbcType="VARCHAR" mode="OUT" />
+  </parameterMap>
 
 
 </mapper>

+ 35 - 35
applications/document/document-server/src/main/resources/mapper/ProductDetailMapper.xml

@@ -268,59 +268,59 @@
         <foreach collection="list" item="item" index="index" separator=";">
             update productdetail
             <set >
-                <if test="pd_prodid != null" >
-                    pd_prodid = #{pd_prodid,jdbcType=INTEGER},
+                <if test="item.pd_prodid != null" >
+                    pd_prodid = #{item.pd_prodid,jdbcType=INTEGER},
                 </if>
-                <if test="pd_prodcode != null" >
-                    pd_prodcode = #{pd_prodcode,jdbcType=VARCHAR},
+                <if test="item.pd_prodcode != null" >
+                    pd_prodcode = #{item.pd_prodcode,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_detno != null" >
-                    pd_detno = #{pd_detno,jdbcType=INTEGER},
+                <if test="item.pd_detno != null" >
+                    pd_detno = #{item.pd_detno,jdbcType=INTEGER},
                 </if>
-                <if test="pd_whcode != null" >
-                    pd_whcode = #{pd_whcode,jdbcType=VARCHAR},
+                <if test="item.pd_whcode != null" >
+                    pd_whcode = #{item.pd_whcode,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_whname != null" >
-                    pd_whname = #{pd_whname,jdbcType=VARCHAR},
+                <if test="item.pd_whname != null" >
+                    pd_whname = #{item.pd_whname,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_whid != null" >
-                    pd_whid = #{pd_whid,jdbcType=INTEGER},
+                <if test="item.pd_whid != null" >
+                    pd_whid = #{item.pd_whid,jdbcType=INTEGER},
                 </if>
-                <if test="pd_price != null" >
-                    pd_price = #{pd_price,jdbcType=DOUBLE},
+                <if test="item.pd_price != null" >
+                    pd_price = #{item.pd_price,jdbcType=DOUBLE},
                 </if>
-                <if test="pd_amount != null" >
-                    pd_amount = #{pd_amount,jdbcType=DOUBLE},
+                <if test="item.pd_amount != null" >
+                    pd_amount = #{item.pd_amount,jdbcType=DOUBLE},
                 </if>
-                <if test="companyId != null" >
-                    companyId = #{companyId,jdbcType=INTEGER},
+                <if test="item.companyId != null" >
+                    companyId = #{item.companyId,jdbcType=INTEGER},
                 </if>
-                <if test="updaterId != null" >
-                    updaterId = #{updaterId,jdbcType=INTEGER},
+                <if test="item.updaterId != null" >
+                    updaterId = #{item.updaterId,jdbcType=INTEGER},
                 </if>
-                <if test="updateTime != null" >
-                    updateTime = #{updateTime,jdbcType=TIMESTAMP},
+                <if test="item.updateTime != null" >
+                    updateTime = #{item.updateTime,jdbcType=TIMESTAMP},
                 </if>
-                <if test="pd_text1 != null" >
-                    pd_text1 = #{pd_text1,jdbcType=VARCHAR},
+                <if test="item.pd_text1 != null" >
+                    pd_text1 = #{item.pd_text1,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_text2 != null" >
-                    pd_text2 = #{pd_text2,jdbcType=VARCHAR},
+                <if test="item.pd_text2 != null" >
+                    pd_text2 = #{item.pd_text2,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_text3 != null" >
-                    pd_text3 = #{pd_text3,jdbcType=VARCHAR},
+                <if test="item.pd_text3 != null" >
+                    pd_text3 = #{item.pd_text3,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_text4 != null" >
-                    pd_text4 = #{pd_text4,jdbcType=VARCHAR},
+                <if test="item.pd_text4 != null" >
+                    pd_text4 = #{item.pd_text4,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_text5 != null" >
-                    pd_text5 = #{pd_text5,jdbcType=VARCHAR},
+                <if test="item.pd_text5 != null" >
+                    pd_text5 = #{item.pd_text5,jdbcType=VARCHAR},
                 </if>
-                <if test="pd_num != null" >
-                    pd_num = #{pd_num,jdbcType=DOUBLE},
+                <if test="item.pd_num != null" >
+                    pd_num = #{item.pd_num,jdbcType=DOUBLE},
                 </if>
             </set>
-            where id = #{id}
+            where id = #{item.id}
         </foreach>
     </update>
     <select id="selectProdidByPrimaryKey" resultType="java.lang.Long">

+ 4 - 4
applications/document/document-server/src/main/resources/mapper/ProductMapper.xml

@@ -504,7 +504,7 @@
         SELECT COUNT(*) FROM BOMDETAIL WHERE BD_SONID=#{id} AND COMPANYID=#{companyId}
     </select>
     <select id="getCountFromProdIO" resultType="int">
-        SELECT COUNT(*) FROM PRODIODETAIL WHERE PD_PRODID=#{id} AND COMPANYID=#{companyId}
+        SELECT COUNT(*) FROM PRODIODETAIL WHERE PD_PRODID=#{id} AND COMPANYID=#{companyId} and pd_piclass!='库存初始化'
     </select>
 
     <insert id="saveProdInOut" parameterType="com.usoftchina.saas.document.entities.ProdInOut">
@@ -905,14 +905,14 @@
 
     <select id="selectOrderCountByProdCode" resultType="java.lang.Integer">
         SELECT COUNT(*) FROM PRODINOUT LEFT JOIN PRODIODETAIL ON PI_ID=PD_PIID AND PRODINOUT.COMPANYID=PRODIODETAIL.COMPANYID
-        WHERE PRODIODETAIL.COMPANYID = #{companyId} AND PD_PRODID = #{id}
+        WHERE PRODIODETAIL.COMPANYID = #{companyId} AND PD_PRODID = #{id} and pd_piclass != '库存初始化';
     </select>
 
     <delete id="deleteProdIOByCode" >
-        DELETE FROM PRODINOUT WHERE PI_TEXT1=#{code} AND COMPANYID = #{companyId}
+        DELETE FROM PRODINOUT WHERE PI_INOUTNO=#{code} AND COMPANYID = #{companyId}
     </delete>
     <delete id="deleteProdIODetailByCode">
-        DELETE FROM PRODIODETAIL WHERE PD_PIID IN (SELECT PI_ID FROM PRODINOUT WHERE PI_TEXT1=#{code} AND PRODINOUT.COMPANYID = #{companyId}) AND PRODIODETAIL.COMPANYID = #{companyId}
+        DELETE FROM PRODIODETAIL WHERE PD_PIID IN (SELECT PI_ID FROM PRODINOUT WHERE PI_INOUTNO=#{code} AND PRODINOUT.COMPANYID = #{companyId}) AND PRODIODETAIL.COMPANYID = #{companyId}
     </delete>
 </mapper>
 

+ 9 - 0
applications/document/document-server/src/main/resources/mapper/VendorMapper.xml

@@ -477,5 +477,14 @@
         and companyId =#{companyId};
     </select>
 
+    <select id="check" parameterMap="checkParamMap" statementType="CALLABLE">
+        CALL SP_LIMITBASE(?, ?, ?, ?)
+    </select>
+    <parameterMap id="checkParamMap" type="java.util.Map">
+        <parameter property="v_type" jdbcType="VARCHAR" mode="IN" />
+        <parameter property="v_id" jdbcType="INTEGER" mode="IN" />
+        <parameter property="v_code" jdbcType="VARCHAR" mode="IN" />
+        <parameter property="v_res" jdbcType="VARCHAR" mode="OUT" />
+    </parameterMap>
 </mapper>
 

+ 2 - 1
applications/money/money-server/src/main/java/com/usoftchina/saas/money/mapper/FundtransferdetailMapper.java

@@ -1,6 +1,7 @@
 package com.usoftchina.saas.money.mapper;
 
 import com.usoftchina.saas.money.po.Fundtransferdetail;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -12,7 +13,7 @@ public interface FundtransferdetailMapper {
 
     int insertSelective(Fundtransferdetail record);
 
-    List<Fundtransferdetail> selectByPrimaryKey(Integer ftdId);
+    List<Fundtransferdetail> selectByPrimaryKey(@Param("id") Integer ftdId, @Param("companyId") Integer companyId);
 
     int updateByPrimaryKeySelective(Fundtransferdetail record);
 

+ 21 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Fundtransfer.java

@@ -45,6 +45,27 @@ public class Fundtransfer extends CommonBaseEntity implements Serializable {
 
     private String ftd_paycode;
 
+    private String ft_auditman;
+
+    private Date ft_auditdate;
+
+
+    public String getFt_auditman() {
+        return ft_auditman;
+    }
+
+    public void setFt_auditman(String ft_auditman) {
+        this.ft_auditman = ft_auditman;
+    }
+
+    public Date getFt_auditdate() {
+        return ft_auditdate;
+    }
+
+    public void setFt_auditdate(Date ft_auditdate) {
+        this.ft_auditdate = ft_auditdate;
+    }
+
     public String getFt_code() {
         return ft_code;
     }

+ 30 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othreceipts.java

@@ -55,6 +55,36 @@ public class Othreceipts extends CommonBaseEntity implements Serializable {
 
     private String ord_remark;
 
+    private String or_auditman;
+
+    private Date or_auditdate;
+
+    public String getOr_auditman() {
+        return or_auditman;
+    }
+
+    public void setOr_auditman(String or_auditman) {
+        this.or_auditman = or_auditman;
+    }
+
+    public Date getOr_auditdate() {
+        return or_auditdate;
+    }
+
+    public void setOr_auditdate(Date or_auditdate) {
+        this.or_auditdate = or_auditdate;
+    }
+
+    @Override
+    public String getCreatorName() {
+        return creatorName;
+    }
+
+    @Override
+    public void setCreatorName(String creatorName) {
+        this.creatorName = creatorName;
+    }
+
     public String getOr_code() {
         return or_code;
     }

+ 18 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Othspendings.java

@@ -56,7 +56,25 @@ public class Othspendings extends CommonBaseEntity implements Serializable {
 
     private String osd_remark;
 
+    private String os_auditman;
 
+    private Date os_auditdate;
+
+    public String getOs_auditman() {
+        return os_auditman;
+    }
+
+    public void setOs_auditman(String os_auditman) {
+        this.os_auditman = os_auditman;
+    }
+
+    public Date getOs_auditdate() {
+        return os_auditdate;
+    }
+
+    public void setOs_auditdate(Date os_auditdate) {
+        this.os_auditdate = os_auditdate;
+    }
 
     public String getOs_code() {
         return os_code;

+ 19 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Paybalance.java

@@ -83,6 +83,25 @@ public class Paybalance extends CommonBaseEntity implements Serializable {
 
     private Double pbd_nowbalance;
 
+    private Date pb_auditdate;
+
+    private String pb_auditman;
+
+    public Date getPb_auditdate() {
+        return pb_auditdate;
+    }
+
+    public void setPb_auditdate(Date pb_auditdate) {
+        this.pb_auditdate = pb_auditdate;
+    }
+
+    public String getPb_auditman() {
+        return pb_auditman;
+    }
+
+    public void setPb_auditman(String pb_auditman) {
+        this.pb_auditman = pb_auditman;
+    }
 
     public Date getUpdatedate() {
         return updatedate;

+ 17 - 0
applications/money/money-server/src/main/java/com/usoftchina/saas/money/po/Recbalance.java

@@ -83,8 +83,25 @@ public class Recbalance extends CommonBaseEntity implements Serializable {
 
     private Double rbd_nowbalance;
 
+    private String rb_auditman;
 
+    private Date rb_auditdate;
 
+    public String getRb_auditman() {
+        return rb_auditman;
+    }
+
+    public void setRb_auditman(String rb_auditman) {
+        this.rb_auditman = rb_auditman;
+    }
+
+    public Date getRb_auditdate() {
+        return rb_auditdate;
+    }
+
+    public void setRb_auditdate(Date rb_auditdate) {
+        this.rb_auditdate = rb_auditdate;
+    }
 
     public Date getUpdatedate() {
         return updatedate;

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

@@ -61,13 +61,21 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
 
         Long id = fundtransfer.getId();
 
-        if (fundtransfer.getId() > 0){
+        DocBaseDTO baseDTO = new DocBaseDTO();
+        if (id > 0){
             fundtransferMapper.updateByPrimaryKeySelective(fundtransfer);
+            baseDTO = getBaseDTOById(id);
+            //日志记录
+            messageLogService.update(baseDTO);
         }else {
             fundtransfer.setCompanyId(BaseContextHolder.getCompanyId());
             fundtransfer.setFt_recorder(BaseContextHolder.getUserName());
             fundtransferMapper.insertSelective(fundtransfer);
             id = fundtransfer.getId();
+
+            baseDTO = getBaseDTOById(id);
+            //日志记录
+            messageLogService.save(baseDTO);
         }
 
         Iterator isdet = fundtransferdetails.iterator();
@@ -82,9 +90,6 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
                 fundtransferdetailMapper.insertSelective(fundtransferdetail);
             }
         }
-        DocBaseDTO baseDTO = getBaseDTOById(id);
-        //日志记录
-        messageLogService.save(baseDTO);
         return baseDTO;
     }
 
@@ -99,6 +104,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         DocBaseDTO docBaseDTO = this.insert(fundtran);
         Long id = docBaseDTO.getId();
 
+
         //取从表金额更新中间表、资金账号表
         List<Fundtransferdetail> fundtransferdetailList = fundtran.getItems();
         Iterator isList = fundtransferdetailList.iterator();
@@ -140,28 +146,37 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             Double bk_amount = fundtransferdetail.getFtd_nowbalance();
             //付款方
             Bankinformation bankinformation = bankinformationMapper.selectByPrimaryKey(bk_id);
-            Double beginamount = bankinformation.getBk_beginamount();
+            Double beginamount = bankinformation.getBk_beginamount() == null ? new Double(0) : bankinformation.getBk_beginamount();
+//            if (beginamount < bk_amount){
+//                throw new BizException(500, BizExceptionCode.BANK_AMOUNT_NOTENOUGH.getMessage());
+//            }
             Double spending = bankinformation.getBk_spending() == null ? new Double(0) : bankinformation.getBk_spending();
             Double incomme = bankinformation.getBk_income() == null ? new Double(0) : bankinformation.getBk_income();
-            bankinformation.setBk_thisamount(beginamount + incomme - spending - bk_amount);
-            bankinformation.setBk_income(incomme);
-            bankinformation.setBk_spending(spending + bk_amount);
+            Bankinformation newbankinformation = new Bankinformation();
+            newbankinformation.setBk_thisamount(beginamount + incomme - (spending + bk_amount));
+            newbankinformation.setBk_income(incomme);
+            newbankinformation.setBk_spending(spending + bk_amount);
+            newbankinformation.setId(bankinformation.getId());
+            newbankinformation.setCompanyId(BaseContextHolder.getCompanyId());
+            bankinformationMapper.updateByPrimaryKeySelective(newbankinformation);
 
             //收款方
             Bankinformation inbankinformation = bankinformationMapper.selectByPrimaryKey(bk_inid);
-            Double inbeginamount = inbankinformation.getBk_beginamount();
+            Double inbeginamount = inbankinformation.getBk_beginamount()== null ? new Double(0) : inbankinformation.getBk_beginamount();
             Double inspending = inbankinformation.getBk_spending() == null ? new Double(0) : inbankinformation.getBk_spending();
             Double inincomme = inbankinformation.getBk_income() == null ? new Double(0) : inbankinformation.getBk_income();
-            inbankinformation.setBk_thisamount(inbeginamount + inincomme - inspending + bk_amount);
-            inbankinformation.setBk_income(inincomme + bk_amount);
-            inbankinformation.setBk_spending(inspending);
+            Bankinformation newinbankinformation = new Bankinformation();
+            newinbankinformation.setBk_thisamount(inbeginamount + (inincomme + bk_amount) - inspending );
+            newinbankinformation.setBk_income(inincomme + bk_amount);
+            newinbankinformation.setBk_spending(inspending);
+            newinbankinformation.setId(inbankinformation.getId());
+            newinbankinformation.setCompanyId(BaseContextHolder.getCompanyId());
+            bankinformationMapper.updateByPrimaryKeySelective(newinbankinformation);
 
-            bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
-            bankinformationMapper.updateByPrimaryKeySelective(inbankinformation);
         }
         DocBaseDTO baseDTO = getBaseDTOById(id);
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 
@@ -179,7 +194,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
 
         //资金
         //取从表金额
-        List<Fundtransferdetail> fundtransferdetailList = fundtransferdetailMapper.selectByPrimaryKey(id);
+        List<Fundtransferdetail> fundtransferdetailList = fundtransferdetailMapper.selectByPrimaryKey(id, Math.toIntExact(BaseContextHolder.getCompanyId()));
         Iterator isList = fundtransferdetailList.iterator();
         while (isList.hasNext()){
             Fundtransferdetail fundtransferdetail = (Fundtransferdetail) isList.next();
@@ -197,29 +212,35 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             Double bk_amount = fundtransferdetail.getFtd_nowbalance();
             //付款方
             Bankinformation bankinformation = bankinformationMapper.selectByPrimaryKey(bk_id);
-            Double beginamount = bankinformation.getBk_beginamount();
+            Double beginamount = bankinformation.getBk_beginamount()== null ? new Double(0) : bankinformation.getBk_beginamount();
             Double spending = bankinformation.getBk_spending() == null ? new Double(0) : bankinformation.getBk_spending();
             Double incomme = bankinformation.getBk_income() == null ? new Double(0) : bankinformation.getBk_income();
-            bankinformation.setBk_thisamount(beginamount + incomme - spending + bk_amount);
-            bankinformation.setBk_income(incomme);
-            bankinformation.setBk_spending(spending - bk_amount);
+            Bankinformation newbankinformation = new Bankinformation();
+            newbankinformation.setBk_thisamount(beginamount + incomme - (spending - bk_amount));
+            newbankinformation.setBk_income(incomme);
+            newbankinformation.setBk_spending(spending - bk_amount);
+            newbankinformation.setId(Long.valueOf(bk_id));
+            newbankinformation.setCompanyId(BaseContextHolder.getCompanyId());
 
             //收款方
             Bankinformation inbankinformation = bankinformationMapper.selectByPrimaryKey(bk_inid);
-            Double inbeginamount = inbankinformation.getBk_beginamount();
+            Double inbeginamount = inbankinformation.getBk_beginamount()== null ? new Double(0) : inbankinformation.getBk_beginamount();
             Double inspending = inbankinformation.getBk_spending() == null ? new Double(0) : inbankinformation.getBk_spending();
             Double inincomme = inbankinformation.getBk_income() == null ? new Double(0) : inbankinformation.getBk_income();
-            inbankinformation.setBk_thisamount(inbeginamount + inincomme - inspending - bk_amount);
-            inbankinformation.setBk_income(inincomme - bk_amount);
-            inbankinformation.setBk_spending(inspending);
-
-            bankinformationMapper.updateByPrimaryKeySelective(bankinformation);
-            bankinformationMapper.updateByPrimaryKeySelective(inbankinformation);
+            Bankinformation newinbankinformation = new Bankinformation();
+            newinbankinformation.setBk_thisamount(inbeginamount + (inincomme-bk_amount) - inspending );
+            newinbankinformation.setBk_income(inincomme-bk_amount);
+            newinbankinformation.setBk_spending(inspending);
+            newinbankinformation.setId(Long.valueOf(bk_inid));
+            newinbankinformation.setCompanyId(BaseContextHolder.getCompanyId());
+
+            bankinformationMapper.updateByPrimaryKeySelective(newbankinformation);
+            bankinformationMapper.updateByPrimaryKeySelective(newinbankinformation);
         }
 
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.unAudit(baseDTO);
     }
 
 
@@ -229,7 +250,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         fundtransferdetailMapper.deleteByPrimaryKey(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.delete(baseDTO);
     }
 
     @Override
@@ -237,7 +258,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
         fundtransferdetailMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     @Override
@@ -278,7 +299,7 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
     public Fundtran select(int id) {
         Fundtran fundtran = new Fundtran();
         fundtran.setMain(fundtransferMapper.selectByPrimaryKey(id));
-        fundtran.setItems(fundtransferdetailMapper.selectByPrimaryKey(id));
+        fundtran.setItems(fundtransferdetailMapper.selectByPrimaryKey(id, Math.toIntExact(BaseContextHolder.getCompanyId())));
         return fundtran;
     }
 
@@ -309,9 +330,13 @@ public class FundtransferServiceImpl extends CommonBaseServiceImpl<FundtransferM
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? fundtransferMapper.validateCodeWhenInsert(code, companyId) :
-                fundtransferMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.FUNDTRANSFER.getCaller()).getData();
+        String codeString = null;
+        synchronized(FundtransferServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? fundtransferMapper.validateCodeWhenInsert(code, companyId) :
+                    fundtransferMapper.validateCodeWhenUpdate(code, id, companyId);
+            codeString = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.FUNDTRANSFER.getCaller()).getData();
+        }
+        return codeString;
     }
 
     private List<Fundtransfer> getListByMode(ListReqDTO req) {

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

@@ -69,13 +69,20 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
 
         Long id = othreceipts.getId();
 
+        DocBaseDTO baseDTO = new DocBaseDTO();
         if (othreceipts.getId() > 0){
             othreceiptsMapper.updateByPrimaryKeySelective(othreceipts);
+            baseDTO = getBaseDTOById(id);
+            //日志记录
+            messageLogService.update(baseDTO);
         }else {
             othreceipts.setCompanyId(BaseContextHolder.getCompanyId());
             othreceipts.setOr_recorder(BaseContextHolder.getUserName());
             othreceiptsMapper.insertSelective(othreceipts);
             id = othreceipts.getId();
+            baseDTO = getBaseDTOById(id);
+            //日志记录
+            messageLogService.save(baseDTO);
         }
 
         Iterator isdet = othreceiptsdetail.iterator();
@@ -90,9 +97,6 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
                 othreceiptsdetailMapper.insertSelective(othreceiptsdetail1);
             }
         }
-        DocBaseDTO baseDTO = getBaseDTOById(id);
-        //日志记录
-        messageLogService.save(baseDTO);
         return baseDTO;
     }
 
@@ -183,7 +187,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
 //                "rb_id="+baseDTO.getId(),"rb_status","rb_statuscode",
 //                "rb_auditdate","rb_auditman");
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 
@@ -224,7 +228,7 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         }
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.unAudit(baseDTO);
     }
 
     @Override
@@ -233,14 +237,14 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
         othreceiptsdetailMapper.deleteByPrimaryKey(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.delete(baseDTO);
     }
 
     public void deleteItem(int id) {
         othreceiptsdetailMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     @Override
@@ -312,9 +316,13 @@ public class OthreceiptsServiceImpl extends CommonBaseServiceImpl<OthreceiptsMap
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? othreceiptsMapper.validateCodeWhenInsert(code, companyId) :
-                othreceiptsMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.OTHRECEIPTS.getCaller()).getData();
+        String codeString = null;
+        synchronized(OthreceiptsServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? othreceiptsMapper.validateCodeWhenInsert(code, companyId) :
+                    othreceiptsMapper.validateCodeWhenUpdate(code, id, companyId);
+            codeString = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.OTHRECEIPTS.getCaller()).getData();
+        }
+        return codeString;
     }
 
     private List<Othreceipts> getListByMode(ListReqDTO req) {

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

@@ -64,13 +64,21 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         Long id = othspendings.getId();
 
 
+        DocBaseDTO baseDTO = new DocBaseDTO();
         if (othspendings.getId() > 0){
             othspendingsMapper.updateByPrimaryKeySelective(othspendings);
+            baseDTO = getBaseDTOById(id);
+            //日志记录
+            messageLogService.update(baseDTO);
         }else {
             othspendings.setCompanyId(BaseContextHolder.getCompanyId());
             othspendings.setOs_recorder(BaseContextHolder.getUserName());
             othspendingsMapper.insertSelective(othspendings);
             id = othspendings.getId();
+
+            baseDTO = getBaseDTOById(id);
+            //日志记录
+            messageLogService.save(baseDTO);
         }
 
         Iterator isdet = othspendingsdetails.iterator();
@@ -85,9 +93,6 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
                 othspendingsdetailMapper.insertSelective(othspendingsdetail);
             }
         }
-        DocBaseDTO baseDTO = getBaseDTOById(id);
-        //日志记录
-        messageLogService.save(baseDTO);
         return baseDTO;
     }
 
@@ -97,7 +102,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         othspendingsdetailMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.delete(baseDTO);
     }
 
     @Override
@@ -105,7 +110,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         othspendingsdetailMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     @Override
@@ -158,7 +163,10 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         Double bk_amount = othspendings.getOs_amount();
         //付款方
         Bankinformation bankinformation = bankinformationMapper.selectByPrimaryKey(bk_id);
-        Double beginamount = bankinformation.getBk_beginamount();
+        Double beginamount = bankinformation.getBk_beginamount() == null ? new Double(0) : bankinformation.getBk_beginamount();
+//        if (beginamount < bk_amount){
+//            throw new BizException(500, BizExceptionCode.BANK_AMOUNT_NOTENOUGH.getMessage());
+//        }
         Double spending = bankinformation.getBk_spending() == null ? new Double(0) : bankinformation.getBk_spending();
         Double incomme = bankinformation.getBk_income() == null ? new Double(0) : bankinformation.getBk_income();
         bankinformation.setBk_thisamount(beginamount + incomme - spending - bk_amount);
@@ -210,7 +218,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
         }
         DocBaseDTO baseDTO = getBaseDTOById(id);
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 
@@ -287,7 +295,7 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
 
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.unAudit(baseDTO);
     }
 
     @Override
@@ -336,9 +344,13 @@ public class OthspendingsServiceImpl extends CommonBaseServiceImpl<OthspendingsM
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? othspendingsMapper.validateCodeWhenInsert(code, companyId) :
-                othspendingsMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.OTHSPENDINGS.getCaller()).getData();
+        String codeString = null;
+        synchronized(OthspendingsServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? othspendingsMapper.validateCodeWhenInsert(code, companyId) :
+                    othspendingsMapper.validateCodeWhenUpdate(code, id, companyId);
+            codeString = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.OTHSPENDINGS.getCaller()).getData();
+        }
+        return codeString;
     }
 
     private List<Othspendings> getListByMode(ListReqDTO req) {

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

@@ -68,14 +68,21 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         //校验数据
         checkPaybalance(pay);
 
-        if (paybalance.getId() > 0){
+        DocBaseDTO baseDTO = new DocBaseDTO();
+
+        if (pbId > 0){
             paybalanceMapper.updateByPrimaryKeySelective(paybalance);
+            baseDTO = getBaseDTOById(pbId);
+            //日志记录
+            messageLogService.update(baseDTO);
         }else {
             paybalance.setCompanyId(BaseContextHolder.getCompanyId());
             paybalance.setPb_recorder(BaseContextHolder.getUserName());
             paybalanceMapper.insertSelective(paybalance);
             pbId = paybalance.getId();
-            System.out.println("rbid:" + pbId);
+            baseDTO = getBaseDTOById(pbId);
+            //日志记录
+            messageLogService.save(baseDTO);
         }
 
         Iterator isdet = paybalancedet.iterator();
@@ -103,9 +110,6 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
                 paybalancedetailMapper.insertSelective(paybalancedetail1);
             }
         }
-        DocBaseDTO baseDTO = getBaseDTOById(pbId);
-        //日志记录
-        messageLogService.save(baseDTO);
         return baseDTO;
     }
 
@@ -134,24 +138,28 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
             }
             //本次核销金额不能大于未核销金额
             if(nowbalance>namount){
-                throw new BizException(500, BizExceptionCode.PAYBALANCE_OUTNOWBALANCE.getMessage());
+                throw new BizException(BizExceptionCode.PAYBALANCE_OUTNOWBALANCE);
             }
             //单据金额
             Double amount = detail.getPbd_amount();
             if(amount>0 && nowbalance<0){
-                String error = "单据类型为" + detail.getPbd_slkind() + "的单据,核销金额必须为正数";
-                throw new BizException(500, error);
+                String msg = BizExceptionCode.PAYBALANCE_NOWAMOUNT_POSITIVE.getMessage();
+                int code = BizExceptionCode.PAYBALANCE_NOWAMOUNT_POSITIVE.getCode();
+                String error = String.format(msg, detail.getPbd_slkind());
+                throw new BizException(code, error);
             }
             if(amount<0 && nowbalance>0){
-                String error = "单据类型为" + detail.getPbd_slkind() + "的单据,核销金额必须为负数";
-                throw new BizException(500, error);
+                String msg = BizExceptionCode.PAYBALANCE_NOWAMOUNT_NEGATIVE.getMessage();
+                int code = BizExceptionCode.PAYBALANCE_NOWAMOUNT_NEGATIVE.getCode();
+                String error = String.format(msg, detail.getPbd_slkind());
+                throw new BizException(code, error);
             }
         }
         //不能选择重复的源单
         for  ( int  i  =   0 ; i  <  paybalancedetail.size()  -   1 ; i ++ )  {
             for  ( int  j  =  paybalancedetail.size()  -   1 ; j  >  i; j -- )  {
                 if  (paybalancedetail.get(j).getPbd_slcode().equals(paybalancedetail.get(i).getPbd_slcode()))  {
-                    throw new BizException(500, BizExceptionCode.PAYBALANCE_UNIQUESOURCECODE.getMessage());
+                    throw new BizException(BizExceptionCode.PAYBALANCE_UNIQUESOURCECODE);
                 }
             }
         }
@@ -270,7 +278,7 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
 //                "pb_id="+baseDTO.getId(),"pb_status","pb_statuscode",
 //                "pb_auditdate","pb_auditman");
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 
@@ -353,7 +361,7 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         }
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.unAudit(baseDTO);
     }
 
     public void delete(int id){
@@ -362,7 +370,7 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         paybalancedetMapper.deleteByPrimaryKey(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.delete(baseDTO);
     }
 
     @Override
@@ -370,7 +378,7 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         paybalancedetMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     @Override
@@ -378,7 +386,7 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
         paybalancedetailMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     public Pay select(int id){
@@ -454,9 +462,13 @@ public class PaybalanceServiceImpl extends CommonBaseServiceImpl<PaybalanceMappe
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? paybalanceMapper.validateCodeWhenInsert(code, companyId) :
-                paybalanceMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.PAYBALANCE.getCaller()).getData();
+        String codeString = null;
+        synchronized(PaybalanceServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? paybalanceMapper.validateCodeWhenInsert(code, companyId) :
+                    paybalanceMapper.validateCodeWhenUpdate(code, id, companyId);
+            codeString = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.PAYBALANCE.getCaller()).getData();
+        }
+        return codeString;
     }
 
     private List<Paybalance> getListByMode(ListReqDTO req) {

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

@@ -66,14 +66,22 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         //校验数据
         checkRecbalance(rec);
 
+        DocBaseDTO baseDTO = new DocBaseDTO();
         Long rbId = recbalance.getId();
         if (rbId > 0){
             recbalanceMapper.updateByPrimaryKeySelective(recbalance);
+            baseDTO = getBaseDTOById(rbId);
+            //日志记录
+            messageLogService.update(baseDTO);
         }else {
             recbalance.setCompanyId(BaseContextHolder.getCompanyId());
             recbalance.setRb_recorder(BaseContextHolder.getUserName());
             recbalanceMapper.insertSelective(recbalance);
             rbId = recbalance.getId();
+
+            baseDTO = getBaseDTOById(rbId);
+            //日志记录
+            messageLogService.save(baseDTO);
         }
 
         Iterator isdet = recbalancedet.iterator();
@@ -101,9 +109,6 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
                 recbalancedetailMapper.insertSelective(recbalancedetail1);
             }
         }
-        DocBaseDTO baseDTO = getBaseDTOById(rbId);
-        //日志记录
-        messageLogService.save(baseDTO);
         return baseDTO;
     }
 
@@ -136,12 +141,16 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
             //单据金额
             Double amount = detail.getRbd_amount();
             if(amount>0 && nowbalance<0){
-                String error = "单据类型为" + detail.getRbd_slkind() + "的单据,核销金额必须为正数";
+                String msg = BizExceptionCode.PAYBALANCE_NOWAMOUNT_POSITIVE.getMessage();
+                int code = BizExceptionCode.PAYBALANCE_NOWAMOUNT_POSITIVE.getCode();
+                String error = String.format(msg, detail.getRbd_slkind());
                 throw new BizException(500, error);
             }
             if(amount<0 && nowbalance>0){
-                String error = "单据类型为" + detail.getRbd_slkind() + "的单据,核销金额必须为负数";
-                throw new BizException(500, error);
+                String msg = BizExceptionCode.PAYBALANCE_NOWAMOUNT_POSITIVE.getMessage();
+                int code = BizExceptionCode.PAYBALANCE_NOWAMOUNT_POSITIVE.getCode();
+                String error = String.format(msg, detail.getRbd_slkind());
+                throw new BizException(code, error);
             }
         }
         //不能选择重复的源单
@@ -177,7 +186,7 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         recbalancedetailMapper.deleteByPrimaryKey(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.delete(baseDTO);
     }
 
     @Override
@@ -197,7 +206,7 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         recbalancedetMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     @Override
@@ -205,7 +214,7 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         recbalancedetailMapper.deleteItem(id);
         DocBaseDTO baseDTO = getBaseDTOById(Long.valueOf(id));
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.deleteDetail(baseDTO);
     }
 
     @Override
@@ -306,7 +315,7 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
 //                "rb_id="+baseDTO.getId(),"rb_status","rb_statuscode",
 //                "rb_auditdate","rb_auditman");
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.audit(baseDTO);
         return baseDTO;
     }
 
@@ -390,7 +399,7 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
         }
         DocBaseDTO baseDTO = getBaseDTOById(id);
         //日志记录
-        messageLogService.save(baseDTO);
+        messageLogService.unAudit(baseDTO);
     }
 
     public PageInfo<Recbalance> selectList(PageRequest page, ListReqDTO reqDTO) {
@@ -458,9 +467,13 @@ public class RecbalanceServiceImpl extends CommonBaseServiceImpl<RecbalanceMappe
             throw new BizException(BizExceptionCode.NULL_CODE);
         }
         Long companyId = BaseContextHolder.getCompanyId();
-        Integer count = "0".equals(String.valueOf(id)) ? recbalanceMapper.validateCodeWhenInsert(code, companyId) :
-                recbalanceMapper.validateCodeWhenUpdate(code, id, companyId);
-        return maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.RECBALANCE.getCaller()).getData();
+        String codeString = null;
+        synchronized(RecbalanceServiceImpl.class) {
+            Integer count = "0".equals(String.valueOf(id)) ? recbalanceMapper.validateCodeWhenInsert(code, companyId) :
+                    recbalanceMapper.validateCodeWhenUpdate(code, id, companyId);
+            codeString = maxnumberService.pushMaxnubmer(count, code, BillCodeSeq.RECBALANCE.getCaller()).getData();
+        }
+        return codeString;
     }
 
     private List<Recbalance> getListByMode(ListReqDTO req) {

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

@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import javax.print.DocFlavor;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Iterator;
@@ -102,7 +103,7 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
     @Override
     public DocSavedDTO saveFormData(VerificationFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
@@ -277,7 +278,9 @@ public class VerificationServiceImpl extends CommonBaseServiceImpl<VerificationM
         }
         String code = verificationMapper.validateResAudit(id);
         if (null != code) {
-            throw new BizException(500, "单据:" + code + " 未审核,无法反审核");
+            String msg = BizExceptionCode.BEFORE_UNAUDIT.getMessage();
+            int errCode = BizExceptionCode.BEFORE_UNAUDIT.getCode();
+            throw new BizException(errCode, String.format(msg, code));
         }
         Verification verification = new Verification();
         //生成更新对象

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

@@ -33,7 +33,7 @@
   <sql id="Base_Column_List" >
     bk_id, bk_bankcode, bk_bankname, bk_date, bk_type, bk_beginamount, bk_thisamount, 
     bk_status, bk_statuscode, bk_recorderid, bk_recorder, bk_recorddate, bk_ym, companyid, 
-    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_remark
+    updaterId, updateTime, bk_text1, bk_text2, bk_text3, bk_text4, bk_text5, bk_spending,  bk_income
   </sql>
   <sql id="Blob_Column_List" >
     bk_remark

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

@@ -24,11 +24,17 @@
     <result column="ftd_nowbalance" property="ftd_nowbalance" jdbcType="DOUBLE" />
     <result column="ftd_paymethod" property="ftd_paymethod" jdbcType="VARCHAR" />
     <result column="ftd_paycode" property="ftd_paycode" jdbcType="VARCHAR" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
+    <result column="ft_auditman" property="ft_auditman" jdbcType="VARCHAR" />
+    <result column="ft_auditdate" property="ft_auditdate" jdbcType="TIMESTAMP" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
   </resultMap>
   <sql id="Base_Column_List" >
     ft_id, ft_code, ft_date, ft_recorderid, ft_recorder, ft_recorddate, ft_status, ft_statuscode, 
     ft_remark, fundtransfer.companyId, fundtransfer.updaterId, fundtransfer.updatedate,
-    ft_text1, ft_text2, ft_text3, ft_text4, ft_text5
+    ft_text1, ft_text2, ft_text3, ft_text4, ft_text5, fundtransfer.creatorName, fundtransfer.createTime,
+    ft_auditman, ft_auditdate
   </sql>
   <sql id="Detail_Column_List" >
     ftd_bankname,ftd_inbankname,ftd_nowbalance,ftd_paymethod,ftd_paycode
@@ -109,6 +115,12 @@
       <if test="ft_text5 != null" >
         ft_text5,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="ft_code != null" >
@@ -154,6 +166,12 @@
       <if test="ft_text5 != null" >
         #{ft_text5,jdbcType=VARCHAR},
       </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
     </trim>
     <selectKey resultType="Long" keyProperty="id" order="AFTER">
       SELECT LAST_INSERT_ID()

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

@@ -35,7 +35,7 @@
     select 
     <include refid="Base_Column_List" />
     from fundtransferdetail
-    where ftd_ftid = #{id,jdbcType=INTEGER}
+    where ftd_ftid = #{id,jdbcType=INTEGER} and companyId = #{companyId}
   </select>
 
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >

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

@@ -29,12 +29,17 @@
     <result column="ord_type" property="ord_type" jdbcType="VARCHAR" />
     <result column="ord_nowbalance" property="ord_nowbalance" jdbcType="DOUBLE" />
     <result column="ord_remark" property="ord_remark" jdbcType="VARCHAR" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
+    <result column="or_auditman" property="or_auditman" jdbcType="VARCHAR" />
+    <result column="or_auditdate" property="or_auditdate" jdbcType="TIMESTAMP" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
   </resultMap>
   <sql id="Base_Column_List" >
     or_id, or_code, or_date, or_custid, or_custcode, or_custname, or_bankcode, or_bankid, 
     or_bankname, or_amount, or_recorderid, or_recorder, or_recorddate, or_status, or_statuscode, 
     or_remark, Othreceipts.companyId, Othreceipts.updaterId, Othreceipts.updatedate, or_text1,
-    or_text2, or_text3, or_text4, or_text5
+    or_text2, or_text3, or_text4, or_text5, othreceipts.creatorName, othreceipts.createTime, or_auditman, or_auditdate
   </sql>
   <sql id="Detail_Column_List" >
     ord_type,ord_nowbalance,ord_remark
@@ -143,6 +148,12 @@
       <if test="or_text5 != null" >
         or_text5,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="creatorTime != null" >
+        creatorTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="or_code != null" >
@@ -209,6 +220,12 @@
       <if test="or_text5 != null" >
         #{or_text5,jdbcType=VARCHAR},
       </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="creatorTime != null" >
+        #{creatorTime,jdbcType=TIMESTAMP},
+      </if>
     </trim>
     <selectKey resultType="Long" keyProperty="id" order="AFTER">
       SELECT LAST_INSERT_ID()

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

@@ -29,13 +29,17 @@
     <result column="osd_type" property="osd_type" jdbcType="VARCHAR" />
     <result column="osd_nowbalance" property="osd_nowbalance" jdbcType="DOUBLE" />
     <result column="osd_remark" property="osd_remark" jdbcType="VARCHAR" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="os_auditman" property="os_auditman" jdbcType="VARCHAR" />
+    <result column="os_auditdate" property="os_auditdate" jdbcType="TIMESTAMP" />
   </resultMap>
   <sql id="Base_Column_List" >
     os_id, os_code, os_date, os_vendid, os_vendcode, os_vendname, os_bankid, os_bankcode, 
     os_bankname, os_amount, os_recorderid, os_recorder, os_recorddate, os_status, os_statuscode, 
-    os_remark, companyId, updaterId,
-    updatedate, os_text1, os_text2, os_text3, os_text4,
-    os_text5
+    os_remark, othspendings.companyId, othspendings.updaterId,
+    othspendings.updatedate, os_text1, os_text2, os_text3, os_text4,
+    os_text5,othspendings.creatorName, othspendings.createTime, os_auditman, os_auditdate
   </sql>
   <sql id="Detail_Column_List" >
     osd_type,osd_nowbalance,osd_remark
@@ -138,6 +142,12 @@
       <if test="os_text5 != null" >
         os_text5,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
       <if test="os_code != null" >
@@ -167,13 +177,13 @@
       <if test="os_amount != null" >
         #{os_amount,jdbcType=DOUBLE},
       </if>
-      now(),
+      <if test="os_recorderid != null" >
+        #{os_recorderid,jdbcType=INTEGER},
+      </if>
       <if test="os_recorder != null" >
         #{os_recorder,jdbcType=VARCHAR},
       </if>
-      <if test="os_recorddate != null" >
-        #{os_recorddate,jdbcType=TIMESTAMP},
-      </if>
+      now(),
       <if test="os_status != null" >
         #{os_status,jdbcType=VARCHAR},
       </if>
@@ -204,6 +214,12 @@
       <if test="os_text5 != null" >
         #{os_text5,jdbcType=VARCHAR},
       </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
     </trim>
     <selectKey resultType="Long" keyProperty="id" order="AFTER">
       SELECT LAST_INSERT_ID()

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

@@ -40,6 +40,10 @@
     <result column="pbd_sldate" jdbcType="TIMESTAMP" property="pbd_sldate" />
     <result column="pbd_amount" jdbcType="DOUBLE" property="pbd_amount" />
     <result column="pbd_nowbalance" jdbcType="DOUBLE" property="pbd_nowbalance" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="pb_auditdate" property="pb_auditdate" jdbcType="TIMESTAMP" />
+    <result column="pb_auditman" property="pb_auditman" jdbcType="VARCHAR" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -103,7 +107,8 @@
     pb_id, pb_code, pb_kind, pb_date, pb_vendid, pb_vendcode, pb_vendname, pb_manname, 
     pb_pdamount, pb_pbdamount, pb_preamount, pb_discounts, pb_havebalance, pb_recorderid, 
     pb_recorder, pb_recorddate, pb_status, pb_statuscode, pb_remark, paybalance.companyId,
-    paybalance.updaterId,paybalance.updatedate, pb_text1, pb_text2, pb_text3, pb_text4, pb_text5
+    paybalance.updaterId,paybalance.updatedate, pb_text1, pb_text2, pb_text3, pb_text4, pb_text5, paybalance.creatorName,
+    paybalance.createTime, pb_auditdate, pb_auditman
   </sql>
   <sql id="left_Column_List">
     ve_leftamount
@@ -232,6 +237,12 @@
       <if test="pb_text5 != null">
         pb_text5,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="pb_code != null">
@@ -307,6 +318,12 @@
       <if test="pb_text5 != null">
         #{pb_text5,jdbcType=VARCHAR},
       </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
     </trim>
     <selectKey resultType="Long" keyProperty="id" order="AFTER">
       SELECT LAST_INSERT_ID()

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

@@ -40,6 +40,10 @@
     <result column="rbd_sldate" jdbcType="TIMESTAMP" property="rbd_sldate" />
     <result column="rbd_amount" jdbcType="DOUBLE" property="rbd_amount" />
     <result column="rbd_nowbalance" jdbcType="DOUBLE" property="rbd_nowbalance" />
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="rb_auditman" property="rb_auditman" jdbcType="VARCHAR" />
+    <result column="rb_auditdate" property="rb_auditdate" jdbcType="TIMESTAMP" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -103,7 +107,8 @@
     rb_id, rb_code, rb_kind, rb_date, rb_custid, rb_custcode, rb_custname, rb_manname,
     rb_rdamount, rb_rbdamount, rb_preamount, rb_discounts, rb_havebalance, rb_recorderid,
     rb_recorder, rb_recorddate, rb_status, rb_statuscode, rb_remark, recbalance.companyId,
-    recbalance.updaterId,recbalance.updatedate, rb_text1, rb_text2, rb_text3, rb_text4, rb_text5
+    recbalance.updaterId,recbalance.updatedate, rb_text1, rb_text2, rb_text3, rb_text4, rb_text5,
+    recbalance.creatorName, recbalance.createTime, rb_auditman, rb_auditdate
   </sql>
   <sql id="left_Column_List">
     cu_leftamount
@@ -278,6 +283,12 @@
       <if test="rb_text5 != null">
         rb_text5,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
+      <if test="createTime != null" >
+        createTime,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="rb_code != null">
@@ -353,6 +364,12 @@
       <if test="rb_text5 != null">
         #{rb_text5,jdbcType=VARCHAR},
       </if>
+      <if test="creatorName != null" >
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
     </trim>
     <selectKey resultType="Long" keyProperty="id" order="AFTER">
       SELECT LAST_INSERT_ID()

+ 5 - 0
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/PurchaseDTO.java

@@ -64,4 +64,9 @@ public class PurchaseDTO extends CommonBaseDTO implements Serializable{
     private String pu_text5;
 
     private String pu_shipaddresscode;
+
+    private String pu_auditman;
+
+    private Date pu_auditdate;
+
 }

+ 1 - 1
applications/purchase/purchase-dto/src/main/java/com/usoftchina/saas/purchase/dto/PurchaseDetailDTO.java

@@ -12,7 +12,7 @@ import java.util.Date;
  * @date 2018/10/9
  */
 @Data
-public class PurchaseDetailDTO implements Serializable{
+public class PurchaseDetailDTO extends CommonBaseDTO implements Serializable{
 
     private  Long pd_puid;
 

+ 2 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/ProdInOutMapper.java

@@ -24,4 +24,6 @@ public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
     int checkQtyFromPurchase(String pu_code);
 
     int checkQtyFromProdIn(String pu_code);
+
+    void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long pi_id);
 }

+ 4 - 0
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -14,6 +14,8 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
 
     Purchase selectByPrimaryKey(Long id);
 
+    int updateByPrimaryKeySelective(Purchase record);
+
     String validateAudit(List<DocBaseDTO> list);
 
     String validateUnAudit(Long id);
@@ -28,4 +30,6 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
     String selectCodeById(Long id);
 
     Integer checkTurnInstatus(Long id);
+
+    void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long pu_id);
 }

+ 4 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/Purchase.java

@@ -2,7 +2,6 @@ package com.usoftchina.saas.purchase.po;
 
 import com.usoftchina.saas.base.entity.CommonBaseEntity;
 import lombok.Data;
-import lombok.ToString;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -60,4 +59,8 @@ public class Purchase extends CommonBaseEntity implements Serializable {
 
     private String pu_shipaddresscode;
 
+    private String pu_auditman;
+
+    private Date pu_auditdate;
+
 }

+ 4 - 2
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/po/PurchaseList.java

@@ -2,7 +2,6 @@ package com.usoftchina.saas.purchase.po;
 
 
 import com.usoftchina.saas.base.entity.CommonBaseEntity;
-import com.usoftchina.saas.document.dto.ProductDTO;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -36,7 +35,6 @@ public class PurchaseList extends CommonBaseEntity implements Serializable {
 
     private Date pu_delivery;
 
-
     private Double pu_taxtotal;
 
     private Double pu_total;
@@ -69,6 +67,10 @@ public class PurchaseList extends CommonBaseEntity implements Serializable {
 
     private String pu_shipaddresscode;
 
+    private Date pu_auditdate;
+
+    private String pu_auditman;
+
     //从表字段
     private Long pd_id;
 

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

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.api.CommonService;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
@@ -56,7 +57,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     private WarehouseApi warehouseApi;
     @Autowired
     private MaxnumberService maxnumberService;
-
+    @Autowired
+    private CommonService commonService;
 
 
     @Override
@@ -112,7 +114,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     @Transactional(propagation = Propagation.REQUIRED)
     public DocBaseDTO saveFormData(ProdInOutFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
@@ -143,10 +145,10 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         //判断更新与保存动作
         if (StringUtils.isEmpty(pi_id) || "0".equals(pi_id.toString())){
             prodInOut.setCompanyId(companyId);
-            //setCreateInfo(prodInOut);
             //插入操作
             getMapper().insertSelective(prodInOut);
             pi_id = prodInOut.getId();
+            getMapper().updateCreator(userId, userName, pi_id);
             //添加从表传输对象
             for (ProdIODetailDTO item : items) {
                 ProdIODetail detail = BeanMapper.map(item,ProdIODetail.class);
@@ -297,7 +299,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
                 singleAudit(prodInOutDTO);
             } catch (Exception e) {
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -349,7 +352,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
                 singleUnAudit(prodInOutDTO);
             }catch (Exception e) {
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -391,7 +395,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
         if ("采购验退单".equals(pi_class)) {
             count = getMapper().checkQtyFromProdIn(pu_code);
             if (count>0){
-                throw new BizException(500, "明细行数量超过来源采购验收单明细行数量");
+                throw new BizException(BizExceptionCode.PURCHASE_DETAIL_OVERNUM);
             }
         }
 

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

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.commons.api.CommonService;
 import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.api.MessageLogService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
@@ -61,6 +62,9 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     private MessageLogService messageLogService;
     @Autowired
     private ProdInOutService prodInOutService;
+    @Autowired
+    private CommonService commonService;
+
 
     @Override
     public PageInfo<PurchaseList> getListData(PageRequest page, ListReqDTO req) {
@@ -100,7 +104,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     @Transactional
     public DocBaseDTO saveFormData(PurchaseFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
@@ -127,12 +131,12 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         purchase.setPu_code(pu_code);
         //判断更新与保存动作
         if (StringUtils.isEmpty(pu_id) || "0".equals(pu_id.toString())) {
-            //录入人
             purchase.setCompanyId(companyId);
-           // setCreateInfo(purchase);
             //插入操作
             purchaseMapper.insertSelective(purchase);
             pu_id = purchase.getId();
+            //录入人
+            purchaseMapper.updateCreator(userId, userName, pu_id);
             //添加从表传输对象
             for (PurchaseDetailDTO item : items) {
                 PurchaseDetail detail = BeanMapper.map(item, PurchaseDetail.class);
@@ -144,8 +148,6 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
                 detail.setCreatorId(userId);
                 detail.setCreateTime(new Date());
                 detail.setCreatorId(userId);
-                detail.setUpdaterId(userId);
-//                detail.setUpdater(userName);
                 detail.setUpdateTime(new Date());
                 insertDetails.add(detail);
             }
@@ -171,12 +173,10 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
             detail.setPd_code(pu_code);
             detail.setPd_delivery(item.getPd_delivery()==null?purchase.getPu_delivery():item.getPd_delivery());
             detail.setUpdaterId(userId);
-//            detail.setUpdater(userName);
             detail.setUpdateTime(new Date());
             if (StringUtils.isEmpty(detail.getId()) || "0".equals(detail.getId().toString())) {
                 detail.setCompanyId(companyId);
                 detail.setCreatorId(userId);
-//                detail.setCreator(userName);
                 detail.setCreateTime(new Date());
                 insertDetails.add(detail);
             } else {
@@ -242,7 +242,9 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
 
         String validate = purchaseMapper.validateAudit(baseDTOs.getBaseDTOs());
         if (!StringUtils.isEmpty(validate)) {
-            throw new BizException(500, "存在已审核单据,单据编号:" + validate);
+            String msg = BizExceptionCode.PURCHASE_ORDER_HASAUDIT.getMessage();
+            int code = BizExceptionCode.PURCHASE_ORDER_HASAUDIT.getCode();
+            throw new BizException(code, String.format(msg, validate));
         }
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
             singleAudit(base.getId());
@@ -268,7 +270,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         }
         String code = purchaseMapper.validateUnAudit(id);
         if (null != code) {
-            throw new BizException(500, "单据:" + code + " 未审核,无法反审核");
+            throw new BizException(BizExceptionCode.BIZ_UNAUDITED);
         }
         singleUnAudit(id);
     }
@@ -282,7 +284,9 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
 
         String msg = purchaseMapper.validateBatchUnAudit(baseDTOs.getBaseDTOs());
         if (null != msg) {
-            throw new BizException(500, "存在未审核单据,单据编号:" + msg);
+            String message = BizExceptionCode.PURCHASE_ORDER_HASAUDIT.getMessage();
+            int code = BizExceptionCode.PURCHASE_ORDER_HASAUDIT.getCode();
+            throw new BizException(code, String.format(message, msg));
         }
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
             singleUnAudit(base.getId());
@@ -492,22 +496,20 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Transactional
-    private Result singleAudit(Long id) {
+    public Result singleAudit(Long id) {
         DocBaseDTO docBaseDTO = getBaseDTOById(id);
         Result result = Result.success(docBaseDTO);
         //检查最小包装数
         result.setMessage(purchasedetailMapper.checkzxbzs(id));
+        commonService.commonAudit("purchase", "pu_id=" + id, "pu_status",
+                "pu_statuscode", "pu_auditdate", "pu_auditman");
         Purchase purchase = new Purchase();
         //生成更新对象
         purchase.setId(id);
-        purchase.setPu_status(Status.AUDITED.getDisplay());
-        purchase.setPu_statuscode(Status.AUDITED.name());
         purchase.setPu_acceptstatus(Status.UNTURNIN.getDisplay());
         purchase.setPu_acceptstatuscode(Status.UNAUDITED.name());
         purchase.setUpdateTime(new Date());
         purchase.setUpdaterId(BaseContextHolder.getUserId());
-//        purchase.setUpdater(BaseContextHolder.getUserName());
-       // setUpdateInfo(purchase);
         //更新存在字段
         //日志
         messageLogService.audit(docBaseDTO);
@@ -515,7 +517,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Transactional
-    private void singleUnAudit(Long id) {
+    public void singleUnAudit(Long id) {
         Purchase purchase = new Purchase();
         //检查是否已转验收单
         Integer num = getMapper().checkTurnInstatus(id);
@@ -535,7 +537,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Transactional
-    private void singleDelete(Long id) {
+    public void singleDelete(Long id) {
         if (null != id) {
             //从表删除
             purchasedetailMapper.deleteByForeignKey(id);
@@ -600,7 +602,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     }
 
     @Transactional
-    private void calcPurchase(Long pu_id) {
+    public void calcPurchase(Long pu_id) {
         purchasedetailMapper.calcPurchase(pu_id);
     }
 

+ 4 - 4
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -62,11 +62,11 @@
     <result column="pd_status" jdbcType="INTEGER" property="pd_status" />
     <result column="companyid" property="companyId" jdbcType="BIGINT" />
     <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" jdbcType="VARCHAR" property="updaterName" />
     <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
-    <!--<result column="updater" jdbcType="VARCHAR" property="updater" />-->
-    <result column="creatorid" property="creatorId" jdbcType="INTEGER"/>
-    <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
-    <!--<result column="creator" property="creator" jdbcType="VARCHAR" />-->
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER"/>
+    <result column="creatorName" jdbcType="VARCHAR" property="creatorName" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
     <result column="pd_text1" jdbcType="VARCHAR" property="pd_text1" />
     <result column="pd_text2" jdbcType="VARCHAR" property="pd_text2" />
     <result column="pd_text3" jdbcType="VARCHAR" property="pd_text3" />

+ 21 - 2
applications/purchase/purchase-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -26,8 +26,10 @@
     <result column="pi_printstatuscode" jdbcType="VARCHAR" property="pi_printstatuscode" />
     <result column="companyid" property="companyId" jdbcType="BIGINT" />
     <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" jdbcType="VARCHAR" property="updaterName" />
     <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
     <result column="creatorid" property="creatorId" jdbcType="INTEGER"/>
+    <result column="creatorName" jdbcType="VARCHAR" property="creatorName" />
     <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
     <result column="pi_text1" jdbcType="VARCHAR" property="pi_text1" />
     <result column="pi_text2" jdbcType="VARCHAR" property="pi_text2" />
@@ -38,7 +40,6 @@
     <result column="pi_auditman" jdbcType="VARCHAR" property="pi_auditman" />
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
     <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
-
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.purchase.po.ProdInOut">
     <result column="pi_address" jdbcType="LONGVARCHAR" property="pi_address" />
@@ -50,7 +51,7 @@
     pi_id, pi_inoutno, pi_class, pi_date, pi_vendid, pi_vendcode, pi_vendname, pi_custid, 
     pi_custcode, pi_custname, pi_puid, pi_pucode, pi_said, pi_sacode, pi_total, pi_recordmanid, 
     pi_recordman, pi_recorddate, pi_status, pi_statuscode, pi_printstatus, pi_printstatuscode, 
-    companyid, updaterid, updatetime,creatorid,createtime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_auditdate,
+    companyid, updaterid,updaterName,updatetime,creatorid,creatorName,createtime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_auditdate,
     pi_auditman,pi_remark,pi_ioid
   </sql>
   <sql id="Blob_Column_List">
@@ -144,12 +145,18 @@
       <if test="updaterId != null" >
         updaterId,
       </if>
+      <if test="updaterName != null" >
+        updaterName,
+      </if>
       <if test="updateTime != null" >
         updateTime,
       </if>
       <if test="creatorId != null" >
         creatorId,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
       <if test="createTime != null" >
         createTime,
       </if>
@@ -253,12 +260,19 @@
       <if test="updaterId != null" >
         #{updaterId,jdbcType=INTEGER},
       </if>
+      <if test="updaterName != null">
+        #{updaterName,jdbcType=VARCHAR},
+      </if>
       <if test="updateTime != null" >
         #{updateTime,jdbcType=TIMESTAMP},
       </if>
       <if test="creatorId != null" >
         #{creatorId,jdbcType=INTEGER},
       </if>
+      <if test="creatorName != null">
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+
       <if test="createTime != null" >
         #{createTime,jdbcType=TIMESTAMP},
       </if>
@@ -424,4 +438,9 @@
   GROUP BY b.pd_ioid) t where t.nowqty>t.totalqty
   </select>
 
+  <update id="updateCreator">
+    update prodinout set creatorId = #{userId} , creatorName=#{userName} where pi_id=#{id}
+  </update>
+
+
 </mapper>

+ 67 - 8
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -25,13 +25,13 @@
     <result column="PU_STATUS" property="pu_status" jdbcType="VARCHAR" />
     <result column="companyid" property="companyId" jdbcType="BIGINT" />
     <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" property="updaterName" jdbcType="VARCHAR" />
     <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
-
-    <!--<result column="updater" jdbcType="VARCHAR" property="updater" />-->
     <result column="creatorid" property="creatorId" jdbcType="INTEGER"/>
-    <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
-    <!--<result column="creator" property="creator" jdbcType="VARCHAR" />-->
-
+    <result column="creatorName" property="creatorName" jdbcType="VARCHAR" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
+    <result column="pu_auditman" property="pu_auditman" jdbcType="VARCHAR" />
+    <result column="pu_auditdate" property="pu_auditdate" jdbcType="TIMESTAMP" />
     <result column="pu_text1" property="pu_text1" jdbcType="VARCHAR" />
     <result column="pu_text2" property="pu_text2" jdbcType="VARCHAR" />
     <result column="pu_text3" property="pu_text3" jdbcType="VARCHAR" />
@@ -46,8 +46,8 @@
     pu_id, pu_code, pu_date, pu_vendid, PU_VENDCODE, PU_VENDNAME, PU_BUYERID, PU_BUYERCODE, 
     PU_BUYERNAME, PU_DELIVERY, PU_TAXTOTAL, PU_TOTAL, PU_REMARK, PU_TOTALUPPER, PU_INDATE, 
     PU_PRINTSTATUS, PU_PRINTSTATUSCODE, PU_ACCEPTSTATUSCODE, PU_ACCEPTSTATUS, PU_STATUSCODE, 
-    PU_STATUS, companyid, updaterId, updateTime,creatorid,createtime, pu_text1, pu_text2, pu_text3, pu_text4,
-    pu_text5
+    PU_STATUS, companyid, updaterId,updaterName,updateTime,creatorid,creatorName,createtime, pu_text1, pu_text2, pu_text3, pu_text4,
+    pu_text5,pu_auditman,pu_auditdate
   </sql>
   <sql id="Blob_Column_List" >
     PU_SHIPADDRESSCODE
@@ -137,12 +137,18 @@
       <if test="updaterId != null" >
         updaterId,
       </if>
+      <if test="updaterName != null" >
+        updaterName,
+      </if>
       <if test="updateTime != null" >
         updateTime,
       </if>
       <if test="creatorId != null" >
       creatorId,
       </if>
+      <if test="creatorName != null" >
+        creatorName,
+      </if>
       <if test="createTime != null" >
       createTime,
       </if>
@@ -232,15 +238,20 @@
       <if test="updaterId != null" >
         #{updaterId,jdbcType=INTEGER},
       </if>
+      <if test="updaterName != null" >
+        #{updaterName,jdbcType=VARCHAR},
+      </if>
       <if test="updateTime != null" >
         #{updateTime,jdbcType=TIMESTAMP},
       </if>
-
       <if test="creatorId != null" >
        #{creatorId,jdbcType=INTEGER},
       </if><if test="createTime != null" >
        #{createTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="creatorName != null" >
+       #{creatorName,jdbcType=VARCHAR},
+      </if>
       <if test="pu_text1 != null" >
         #{pu_text1,jdbcType=VARCHAR},
       </if>
@@ -333,6 +344,9 @@
       <if test="updateTime != null" >
         updateTime = #{updateTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="updaterName != null" >
+        updaterName = #{updaterName,jdbcType=VARCHAR},
+      </if>
       <if test="pu_text1 != null" >
         pu_text1 = #{pu_text1,jdbcType=VARCHAR},
       </if>
@@ -354,6 +368,39 @@
     </set>
     where pu_id = #{id,jdbcType=INTEGER}
   </update>
+  <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.purchase.po.Purchase" >
+    update purchase
+    set pu_code = #{pu_code,jdbcType=VARCHAR},
+      pu_date = #{pu_date,jdbcType=TIMESTAMP},
+      pu_vendid = #{pu_vendid,jdbcType=INTEGER},
+      PU_VENDCODE = #{pu_vendcode,jdbcType=VARCHAR},
+      PU_VENDNAME = #{pu_vendname,jdbcType=VARCHAR},
+      PU_BUYERID = #{pu_buyerid,jdbcType=INTEGER},
+      PU_BUYERCODE = #{pu_buyercode,jdbcType=VARCHAR},
+      PU_BUYERNAME = #{pu_buyername,jdbcType=VARCHAR},
+      PU_DELIVERY = #{pu_delivery,jdbcType=TIMESTAMP},
+      PU_TAXTOTAL = #{pu_taxtotal,jdbcType=DOUBLE},
+      PU_TOTAL = #{pu_total,jdbcType=DOUBLE},
+      PU_REMARK = #{pu_remark,jdbcType=VARCHAR},
+      PU_TOTALUPPER = #{pu_totalupper,jdbcType=VARCHAR},
+      PU_INDATE = #{createTime,jdbcType=TIMESTAMP},
+      PU_PRINTSTATUS = #{pu_printstatus,jdbcType=VARCHAR},
+      PU_PRINTSTATUSCODE = #{pu_printstatuscode,jdbcType=VARCHAR},
+      PU_ACCEPTSTATUSCODE = #{pu_acceptstatuscode,jdbcType=VARCHAR},
+      PU_ACCEPTSTATUS = #{pu_acceptstatus,jdbcType=VARCHAR},
+      PU_STATUSCODE = #{pu_statuscode,jdbcType=VARCHAR},
+      PU_STATUS = #{pu_status,jdbcType=VARCHAR},
+      companyid = #{companyId,jdbcType=INTEGER},
+      updaterId = #{updaterId,jdbcType=INTEGER},
+      updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      updater = #{updater,jdbcType=VARCHAR},
+      pu_text1 = #{pu_text1,jdbcType=VARCHAR},
+      pu_text2 = #{pu_text2,jdbcType=VARCHAR},
+      pu_text3 = #{pu_text3,jdbcType=VARCHAR},
+      pu_text4 = #{pu_text4,jdbcType=VARCHAR},
+      pu_text5 = #{pu_text5,jdbcType=VARCHAR}
+    where pu_id = #{id,jdbcType=INTEGER}
+  </update>
   <select id="validateAudit" parameterType="com.usoftchina.saas.commons.dto.DocBaseDTO" resultType="java.lang.String">
     select GROUP_CONCAT(pu_code) from purchase where pu_statuscode='AUDITED' and pu_id in
     <foreach collection="list" item="item" open="(" close=")" separator=",">
@@ -369,6 +416,13 @@
   <select id="validateUnAudit" parameterType="long" resultType="java.lang.String">
     select pu_code from purchase where pu_id = #{pu_id} and IFNULL(pu_statuscode,'UNAUDITED')='UNAUDITED'
   </select>
+  <!--<select id="selectByTest" resultMap="BaseResultMap" parameterType="string" >
+    select * from purchase <where>
+    <if test="_parameter != null">
+       ${value}
+    </if>
+  </where>
+  </select>-->
   <select id="validateCodeWhenInsert" resultType="int">
     select count(1) from purchase where pu_code = #{code} and companyId =#{companyId}
   </select>
@@ -383,4 +437,9 @@
     select count(1) from purchasedetail where PD_PUID=#{id} and PD_YQTY !=0;
 </select>
 
+  <update id="updateCreator">
+    update purchase set creatorId = #{userId} , creatorName=#{userName} where pu_id=#{id}
+  </update>
+
+
 </mapper>

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

@@ -71,7 +71,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     public DocBaseDTO saveFormData(ProdInOutFormDTO formdata) {
 
         if (null == formdata || null == formdata.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
@@ -224,7 +224,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             try{
                 singleDelete(base.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -286,7 +287,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
                 singleAudit(prodInOutDTO);
             }catch (Exception e){
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -339,7 +341,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
                 singleUnAudit(prodInOutDTO);
             }catch (Exception e){
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -515,7 +518,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             try{
                 close(base.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -549,7 +553,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             try{
                 open(base.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();

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

@@ -94,7 +94,7 @@ public class SaleServiceImpl implements SaleService{
     @Transactional
     public DocBaseDTO saveFormData(SaleFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
@@ -262,7 +262,9 @@ public class SaleServiceImpl implements SaleService{
 
         String validate = saleMapper.validateAudit(baseDTOs.getBaseDTOs());
         if (!StringUtils.isEmpty(validate)) {
-            throw new BizException(500, "存在已审核单据,单据编号:" + validate);
+            String message = BizExceptionCode.SALE_ORDER_HASAUDIT.getMessage();
+            int code = BizExceptionCode.SALE_ORDER_HASAUDIT.getCode();
+            throw new BizException(code, String.format(message, validate));
         }
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
             singleAudit(base.getId());
@@ -310,7 +312,9 @@ public class SaleServiceImpl implements SaleService{
 
         String msg = saleMapper.validateBatchUnAudit(baseDTOs.getBaseDTOs());
         if (null != msg) {
-            throw new BizException(500, "存在未审核单据,单据编号:" + msg);
+            String message = BizExceptionCode.SALE_ORDER_HASAUDIT.getMessage();
+            int code = BizExceptionCode.SALE_ORDER_HASAUDIT.getCode();
+            throw new BizException(code, String.format(message, msg));
         }
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
             singleUnAudit(base.getId());

+ 1 - 4
applications/sale/sale-server/src/main/resources/mapper/SaleMapper.xml

@@ -44,10 +44,7 @@
     sa_seller,sa_sellercode,sa_date
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
-    select 
-    <include refid="Base_Column_List" />
-    from sale
-    where sa_id = #{id}
+    select * from sale where sa_id = #{id}
   </select>
   <delete id="deleteByPrimaryKey" parameterType="long" >
     delete from sale

+ 4 - 2
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/dto/ProdInOutDTO.java

@@ -43,7 +43,7 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
 
     private Double pi_total;
 
-    private Long pi_recordmanid;
+    private Integer pi_recordmanid;
 
     private String pi_recordman;
 
@@ -71,7 +71,9 @@ public class ProdInOutDTO extends CommonBaseDTO implements Serializable {
 
     private Date pi_auditdate;
 
-    private Date pi_auditman;
+    private String pi_auditman;
 
     private String pi_remark;
+
+    private Long pi_ioid;
 }

+ 2 - 4
applications/storage/storage-dto/src/main/java/com/usoftchina/saas/storage/po/ProdInOut.java

@@ -31,13 +31,13 @@ public class ProdInOut extends CommonBaseEntity implements Serializable {
 
     private String pi_pucode;
 
-    private Long pi_said;
+    private Integer pi_said;
 
     private String pi_sacode;
 
     private Double pi_total;
 
-    private Long pi_recordmanid;
+    private Integer pi_recordmanid;
 
     private String pi_recordman;
 
@@ -63,8 +63,6 @@ public class ProdInOut extends CommonBaseEntity implements Serializable {
 
     private String pi_address;
 
-    private Double pi_nettotal;
-
     private Date pi_auditdate;
 
     private String pi_auditman;

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

@@ -18,10 +18,6 @@ public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
 
     int updateByPrimaryKeySelective(ProdInOut record);
 
-    int updateByPrimaryKeyWithBLOBs(ProdInOut record);
-
-    int updateByPrimaryKey(ProdInOut record);
-
     Integer validateCodeWhenInsert(@Param("pi_inoutno") String pi_inoutno, @Param("companyId") Long companyId);
 
     Integer validateCodeWhenUpdate(@Param("pi_inoutno") String pi_inoutno, @Param("id") Long id, @Param("companyId") Long companyId);
@@ -33,4 +29,6 @@ public interface ProdInOutMapper extends CommonBaseMapper<ProdInOut> {
     void post(Map<String, Object> map);
 
     void unPost(Map<String, Object> map);
+
+    void updateCreator(@Param("userId") Long userId,@Param("userName") String userName,@Param("id") Long pi_id);
 }

+ 55 - 35
applications/storage/storage-server/src/main/java/com/usoftchina/saas/storage/service/impl/MakeServiceImpl.java

@@ -166,7 +166,9 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
                     onHand=0d;
                 }
                 if(onHand < qty){
-                    throw new BizException(79402, "行" + i + "库存不足");
+                    String msg = BizExceptionCode.UNENOUGH_DETAIL_STOCK.getMessage();
+                    int code = BizExceptionCode.SALE_ORDER_HASAUDIT.getCode();
+                    throw new BizException(code, String.format(msg, i));
                 }
             }
         }else if ("拆件".equals(make.getMa_type())){
@@ -175,10 +177,14 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             try {
                 onHand = getMapper().getOnHand(make.getMa_prodcode(), make.getMa_whcode(), BaseContextHolder.getCompanyId());
             }catch (Exception e){
-                throw new BizException(79402, make.getMa_prodcode() + ":库存不足");
+                String msg = BizExceptionCode.UNENOUGH_STOCK.getMessage();
+                int code = BizExceptionCode.UNENOUGH_STOCK.getCode();
+                throw new BizException(code, String.format(msg, make.getMa_prodcode()));
             }
             if(onHand < qty){
-                throw new BizException(79402, make.getMa_prodcode() + ":库存不足");
+                String msg = BizExceptionCode.UNENOUGH_STOCK.getMessage();
+                int code = BizExceptionCode.UNENOUGH_STOCK.getCode();
+                throw new BizException(code, String.format(msg, make.getMa_prodcode()));
             }
         }
     }
@@ -266,6 +272,13 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
     public void singleAudit(MakeListDTO makeListDTO) {
         //1.获取主从表数据
         Make make = makeListDTO.getMain();
+        //检验单审核状态
+        //检查审核状态
+        String ma_statuscode = make.getMa_statuscode();
+        if(StringUtils.isEmpty(ma_statuscode)||(!StringUtils.isEmpty(ma_statuscode)&&!ma_statuscode.equals(Status.UNAUDITED.name()))){
+            throw  new BizException(BizExceptionCode.BIZ_AUDITED);
+        };
+
         //2.校验库存是否足够
         validStorage(makeListDTO);
         //3.生成  完工入库单和领料单 并 过账
@@ -316,7 +329,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
      * @param makeListDTO
      */
     @Transactional(rollbackFor = Exception.class)
-    private void generateProdIO(MakeListDTO makeListDTO) {
+    public void generateProdIO(MakeListDTO makeListDTO) {
         Make make = makeListDTO.getMain();
         Long ma_id = make.getId();
         List<MakeMaterial> items = makeListDTO.getItems();
@@ -329,7 +342,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             String code = maxnumberService.getMaxnumber("MakeOut", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
-            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
+//            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
             prodInOut.setPi_auditman("");               //审核人
@@ -389,7 +402,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             code = maxnumberService.getMaxnumber("MakeIn", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
-            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
+//            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
             prodInOut.setPi_auditman("");               //审核人
@@ -440,7 +453,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
             //prodInOut.setPi_total(make.getMa_price());
-            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
+//            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
             prodInOut.setPi_auditman("");               //审核人
@@ -498,7 +511,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             code = maxnumberService.getMaxnumber("MakeIn", true).getData();
             prodInOut.setPi_inoutno(code);
             prodInOut.setPi_date(new Date());       //出入库日期
-            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
+//            prodInOut.setPi_recordmanid(BaseContextHolder.getUserId());     //录入人ID
             prodInOut.setPi_recorddate(new Date());     //录入日期
             prodInOut.setPi_auditdate(new Date());      //审核日期
             prodInOut.setPi_auditman("");               //审核人
@@ -537,7 +550,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
                 prodIODetailList.add(prodIODetail);
             }
             prodIODetailMapper.batchInsert(prodIODetailList);
-
             map.put("inoutNo", code);
             map.put("class", "完工入库单");
             map.put("commitid", BaseContextHolder.getUserId());
@@ -551,10 +563,21 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
     }
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
     public DocBaseDTO resAudit(Long id) {
+        return singleUnAudit(id);
+    }
+
+
+
+    @Transactional(propagation = Propagation.REQUIRED)
+    public DocBaseDTO singleUnAudit(Long id) {
         //1.获取主从表数据
         Make make = getMapper().selectByPrimaryKey(id);
+        //检查审核状态
+        String ma_statuscode = make.getMa_statuscode();
+        if(StringUtils.isEmpty(ma_statuscode)||(!StringUtils.isEmpty(ma_statuscode)&&!ma_statuscode.equals(Status.AUDITED.name()))){
+            throw  new BizException(BizExceptionCode.BIZ_UNAUDITED);
+        };
         List<MakeMaterial> items = makeMaterialMapper.selectByFK(id, BaseContextHolder.getCompanyId());
         MakeListDTO makeListDTO = new MakeListDTO(make, items);
         //2.校验库存是否足够
@@ -577,7 +600,23 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
     }
 
 
-
+    @Override
+    public String batchUnAudit(BatchDealBaseDTO baseDTOs) {
+        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
+                baseDTOs.getBaseDTOs().size() == 0) {
+            return "无可反审核单据。";
+        }
+        StringBuffer errorMsg = new StringBuffer();
+        for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
+            try {
+                Long id =  base.getId();
+                singleUnAudit(id);
+            }catch (Exception e) {
+                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+            }
+        }
+        return errorMsg.toString();
+    }
 
     @Override
     public String batchClose(BatchDealBaseDTO batchDealBaseDTO) {
@@ -586,7 +625,8 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             try{
                 close(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -599,7 +639,8 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
             try{
                 open(docBaseDTO.getId());
             }catch (Exception e){
-                errorMsg.append("编号:" + docBaseDTO.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, docBaseDTO.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -618,34 +659,13 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
     }
 
 
-
-    @Override
-    public String batchUnAudit(BatchDealBaseDTO baseDTOs) {
-        if (null == baseDTOs || null == baseDTOs.getBaseDTOs() ||
-                baseDTOs.getBaseDTOs().size() == 0) {
-            return "无可反审核单据。";
-        }
-        StringBuffer errorMsg = new StringBuffer();
-        for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
-            try {
-                Long id =  base.getId();
-
-//                ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
-//                singleUnAudit(prodInOutDTO);
-            }catch (Exception e) {
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
-            }
-        }
-        return errorMsg.toString();
-    }
-
     /**
      * 1.查找制造单关联的出入库单据
      * 2.反过账
      * @param make
      */
     @Transactional(rollbackFor = Exception.class)
-    private void selectProdIO(Make make) {
+    public void selectProdIO(Make make) {
         String code = make.getMa_code();
         String type = make.getMa_type();
         String outCode="";

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

@@ -106,12 +106,15 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
     @Transactional(propagation = Propagation.REQUIRED)
     public DocBaseDTO saveFormData(ProdInOutFormDTO formdata) {
         if (null == formdata || null == formdata.getMain()){
-            throw new BizException(500, "数据为空,请填写后再保存");
+            throw new BizException(BizExceptionCode.EMPTY_DATA);
         }
         //公司ID
         Long companyId = BaseContextHolder.getCompanyId();
         //人员Id
         Long userId = BaseContextHolder.getUserId();
+        String userName = BaseContextHolder.getUserName();
+
+
         //获取主表信息
         ProdInOutDTO main = formdata.getMain();
         List<ProdIODetailDTO> items = formdata.getItems();
@@ -139,6 +142,7 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
             //插入操作
             getMapper().insertSelective(prodInOut);
             pi_id = prodInOut.getId();
+            getMapper().updateCreator(userId, userName, pi_id);
             //添加从表传输对象
             for (ProdIODetailDTO item : items) {
                 ProdIODetail detail = BeanMapper.map(item,ProdIODetail.class);
@@ -273,7 +277,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
                 singleAudit(prodInOutDTO);
             } catch (Exception e){
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();
@@ -325,7 +330,8 @@ public class ProdInOutServiceImpl extends CommonBaseServiceImpl<ProdInOutMapper,
                 ProdInOutDTO prodInOutDTO = BeanMapper.map(prodInOut,ProdInOutDTO.class);
                 singleUnAudit(prodInOutDTO);
             }catch (Exception e) {
-                errorMsg.append("编号:" + base.getCode() + "处理失败," + e.getMessage());
+                String msg = BizExceptionCode.DEAL_FAILED.getMessage();
+                errorMsg.append(String.format(msg, base.getCode(), e.getMessage()));
             }
         }
         return errorMsg.toString();

+ 10 - 7
applications/storage/storage-server/src/main/resources/mapper/ProdInOutListMapper.xml

@@ -29,12 +29,10 @@
     <result column="pi_text3" jdbcType="VARCHAR" property="pi_text3" />
     <result column="pi_text4" jdbcType="VARCHAR" property="pi_text4" />
     <result column="pi_text5" jdbcType="VARCHAR" property="pi_text5" />
-    <result column="pi_address" jdbcType="VARCHAR" property="pi_address" />
     <result column="pi_auditdate" jdbcType="TIMESTAMP" property="pi_auditdate" />
     <result column="pi_auditman" jdbcType="VARCHAR" property="pi_auditman" />
-
-
-
+    <result column="pi_address" jdbcType="VARCHAR" property="pi_address" />
+    <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
     <result column="pd_piid" jdbcType="INTEGER" property="pd_piid" />
     <result column="pd_inoutno" jdbcType="VARCHAR" property="pd_inoutno" />
     <result column="pd_piclass" jdbcType="VARCHAR" property="pd_piclass" />
@@ -62,9 +60,13 @@
     <result column="pd_orderid" jdbcType="INTEGER" property="pd_orderid" />
     <result column="pd_sdid" jdbcType="INTEGER" property="pd_sdid" />
     <result column="pd_status" jdbcType="INTEGER" property="pd_status" />
-    <result column="companyid" jdbcType="INTEGER" property="companyId" />
-    <result column="updaterid" jdbcType="INTEGER" property="updaterId" />
-    <result column="updatetime" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="companyid" property="companyId" jdbcType="BIGINT" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" jdbcType="VARCHAR" property="updaterName" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="creatorId" property="creatorId" jdbcType="INTEGER"/>
+    <result column="creatorName" jdbcType="VARCHAR" property="creatorName" />
+    <result column="createTime" property="createTime" jdbcType="TIMESTAMP" />
     <result column="pd_text1" jdbcType="VARCHAR" property="pd_text1" />
     <result column="pd_text2" jdbcType="VARCHAR" property="pd_text2" />
     <result column="pd_text3" jdbcType="VARCHAR" property="pd_text3" />
@@ -73,6 +75,7 @@
     <result column="pd_ym" jdbcType="INTEGER" property="pd_ym" />
     <result column="pd_yqty" jdbcType="DOUBLE" property="pd_yqty" />
     <result column="pd_ioid" jdbcType="INTEGER" property="pd_ioid" />
+    <result column="pd_remark" jdbcType="VARCHAR" property="pd_remark" />
     <result column="pr_id" property="pr_id"/>
     <result column="pr_code" property="pr_code"/>
     <result column="pr_detail" property="pr_detail"/>

+ 62 - 99
applications/storage/storage-server/src/main/resources/mapper/ProdInOutMapper.xml

@@ -24,9 +24,13 @@
     <result column="pi_statuscode" jdbcType="VARCHAR" property="pi_statuscode" />
     <result column="pi_printstatus" jdbcType="VARCHAR" property="pi_printstatus" />
     <result column="pi_printstatuscode" jdbcType="VARCHAR" property="pi_printstatuscode" />
-    <result column="companyid" jdbcType="INTEGER" property="companyId" />
-    <result column="updaterid" jdbcType="INTEGER" property="updaterId" />
-    <result column="updatetime" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="companyid" property="companyId" jdbcType="BIGINT" />
+    <result column="updaterId" property="updaterId" jdbcType="INTEGER" />
+    <result column="updaterName" jdbcType="VARCHAR" property="updaterName" />
+    <result column="updateTime" property="updateTime" jdbcType="TIMESTAMP" />
+    <result column="creatorid" property="creatorId" jdbcType="INTEGER"/>
+    <result column="creatorName" jdbcType="VARCHAR" property="creatorName" />
+    <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
     <result column="pi_text1" jdbcType="VARCHAR" property="pi_text1" />
     <result column="pi_text2" jdbcType="VARCHAR" property="pi_text2" />
     <result column="pi_text3" jdbcType="VARCHAR" property="pi_text3" />
@@ -35,7 +39,7 @@
     <result column="pi_auditdate" jdbcType="TIMESTAMP" property="pi_auditdate" />
     <result column="pi_auditman" jdbcType="VARCHAR" property="pi_auditman" />
     <result column="pi_remark" jdbcType="VARCHAR" property="pi_remark" />
-
+    <result column="pi_ioid" jdbcType="INTEGER" property="pi_ioid" />
   </resultMap>
   <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.usoftchina.saas.storage.po.ProdInOut">
     <result column="pi_address" jdbcType="LONGVARCHAR" property="pi_address" />
@@ -47,8 +51,8 @@
     pi_id, pi_inoutno, pi_class, pi_date, pi_vendid, pi_vendcode, pi_vendname, pi_custid, 
     pi_custcode, pi_custname, pi_puid, pi_pucode, pi_said, pi_sacode, pi_total, pi_recordmanid, 
     pi_recordman, pi_recorddate, pi_status, pi_statuscode, pi_printstatus, pi_printstatuscode, 
-    companyid, updaterid, updatetime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_auditdate,
-    pi_auditman,pi_remark
+    companyid, updaterid,updaterName,updatetime,creatorid,creatorName,createtime, pi_text1, pi_text2, pi_text3, pi_text4, pi_text5,pi_auditdate,
+    pi_auditman,pi_remark,pi_ioid
   </sql>
   <sql id="Blob_Column_List">
     pi_address
@@ -121,9 +125,6 @@
       <if test="pi_recordman != null">
         pi_recordman,
       </if>
-      <if test="createTime != null">
-        pi_recorddate,
-      </if>
       <if test="pi_status != null">
         pi_status,
       </if>
@@ -136,14 +137,27 @@
       <if test="pi_printstatuscode != null">
         pi_printstatuscode,
       </if>
-      <if test="companyId != null">
+
+      <if test="companyId != null" >
         companyid,
       </if>
-      <if test="updaterId != null">
-        updaterid,
+      <if test="updaterId != null" >
+        updaterId,
+      </if>
+      <if test="updaterName != null" >
+        updaterName,
+      </if>
+      <if test="updateTime != null" >
+        updateTime,
+      </if>
+      <if test="creatorId != null" >
+        creatorId,
+      </if>
+      <if test="creatorName != null" >
+        creatorName,
       </if>
-      <if test="updateTime != null">
-        updatetime,
+      <if test="createTime != null" >
+        createTime,
       </if>
       <if test="pi_text1 != null">
         pi_text1,
@@ -172,6 +186,9 @@
       <if test="pi_remark != null">
         pi_remark,
       </if>
+      <if test="pi_ioid != null">
+        pi_ioid,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
 
@@ -223,9 +240,6 @@
       <if test="pi_recordman != null">
         #{pi_recordman,jdbcType=VARCHAR},
       </if>
-      <if test="createTime != null">
-        #{createTime,jdbcType=TIMESTAMP},
-      </if>
       <if test="pi_status != null">
         #{pi_status,jdbcType=VARCHAR},
       </if>
@@ -238,15 +252,29 @@
       <if test="pi_printstatuscode != null">
         #{pi_printstatuscode,jdbcType=VARCHAR},
       </if>
-      <if test="companyId != null">
+
+      <if test="companyId != null" >
         #{companyId,jdbcType=INTEGER},
       </if>
-      <if test="updaterId != null">
+      <if test="updaterId != null" >
         #{updaterId,jdbcType=INTEGER},
       </if>
-      <if test="updateTime != null">
+      <if test="updaterName != null">
+        #{updaterName,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null" >
         #{updateTime,jdbcType=TIMESTAMP},
       </if>
+      <if test="creatorId != null" >
+        #{creatorId,jdbcType=INTEGER},
+      </if>
+      <if test="creatorName != null">
+        #{creatorName,jdbcType=VARCHAR},
+      </if>
+
+      <if test="createTime != null" >
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
       <if test="pi_text1 != null">
         #{pi_text1,jdbcType=VARCHAR},
       </if>
@@ -274,6 +302,9 @@
       <if test="pi_remark != null">
         #{pi_remark,jdbcType=VARCHAR},
       </if>
+      <if test="pi_ioid != null">
+        #{pi_ioid,jdbcType=INTEGER},
+      </if>
     </trim>
   </insert>
 
@@ -343,14 +374,14 @@
       <if test="pi_printstatuscode != null">
         pi_printstatuscode = #{pi_printstatuscode,jdbcType=VARCHAR},
       </if>
-      <if test="companyId != null">
+      <if test="companyId != null" >
         companyid = #{companyId,jdbcType=INTEGER},
       </if>
-      <if test="updaterId != null">
-        updaterid = #{updaterId,jdbcType=INTEGER},
+      <if test="updaterId != null" >
+        updaterId = #{updaterId,jdbcType=INTEGER},
       </if>
-      <if test="updateTime != null">
-        updatetime = #{updateTime,jdbcType=TIMESTAMP},
+      <if test="updateTime != null" >
+        updateTime = #{updateTime,jdbcType=TIMESTAMP},
       </if>
       <if test="pi_text1 != null">
         pi_text1 = #{pi_text1,jdbcType=VARCHAR},
@@ -382,80 +413,7 @@
     </set>
     where pi_id = #{id,jdbcType=INTEGER}
   </update>
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="com.usoftchina.saas.storage.po.ProdInOut">
-    update prodinout
-    set pi_inoutno = #{pi_inoutno,jdbcType=VARCHAR},
-      pi_class = #{pi_class,jdbcType=VARCHAR},
-      pi_date = #{pi_date,jdbcType=TIMESTAMP},
-      pi_vendid = #{pi_vendid,jdbcType=INTEGER},
-      pi_vendcode = #{pi_vendcode,jdbcType=VARCHAR},
-      pi_vendname = #{pi_vendname,jdbcType=VARCHAR},
-      pi_custid = #{pi_custid,jdbcType=INTEGER},
-      pi_custcode = #{pi_custcode,jdbcType=VARCHAR},
-      pi_custname = #{pi_custname,jdbcType=VARCHAR},
-      pi_puid = #{pi_puid,jdbcType=INTEGER},
-      pi_pucode = #{pi_pucode,jdbcType=VARCHAR},
-      pi_said = #{pi_said,jdbcType=INTEGER},
-      pi_sacode = #{pi_sacode,jdbcType=VARCHAR},
-      pi_total = #{pi_total,jdbcType=DOUBLE},
-      pi_recordmanid = #{pi_recordmanid,jdbcType=INTEGER},
-      pi_recordman = #{pi_recordman,jdbcType=VARCHAR},
-      pi_recorddate = #{createTime,jdbcType=TIMESTAMP},
-      pi_status = #{pi_status,jdbcType=VARCHAR},
-      pi_statuscode = #{pi_statuscode,jdbcType=VARCHAR},
-      pi_printstatus = #{pi_printstatus,jdbcType=VARCHAR},
-      pi_printstatuscode = #{pi_printstatuscode,jdbcType=VARCHAR},
-      companyid = #{companyid,jdbcType=INTEGER},
-      updaterid = #{updaterid,jdbcType=INTEGER},
-      updatetime = #{updatetime,jdbcType=TIMESTAMP},
-      pi_text1 = #{pi_text1,jdbcType=VARCHAR},
-      pi_text2 = #{pi_text2,jdbcType=VARCHAR},
-      pi_text3 = #{pi_text3,jdbcType=VARCHAR},
-      pi_text4 = #{pi_text4,jdbcType=VARCHAR},
-      pi_text5 = #{pi_text5,jdbcType=VARCHAR},
-      pi_address = #{pi_address,jdbcType=LONGVARCHAR},
-      pi_auditdate = #{pi_auditdate,jdbcType=TIMESTAMP},
-      pi_auditman = #{pi_auditman,jdbcType=VARCHAR},
-      pi_remark = #{pi_remark,jdbcType=VARCHAR}
-    where pi_id = #{pi_id,jdbcType=INTEGER}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.storage.po.ProdInOut">
-    update prodinout
-    set pi_inoutno = #{pi_inoutno,jdbcType=VARCHAR},
-      pi_class = #{pi_class,jdbcType=VARCHAR},
-      pi_date = #{pi_date,jdbcType=TIMESTAMP},
-      pi_vendid = #{pi_vendid,jdbcType=INTEGER},
-      pi_vendcode = #{pi_vendcode,jdbcType=VARCHAR},
-      pi_vendname = #{pi_vendname,jdbcType=VARCHAR},
-      pi_custid = #{pi_custid,jdbcType=INTEGER},
-      pi_custcode = #{pi_custcode,jdbcType=VARCHAR},
-      pi_custname = #{pi_custname,jdbcType=VARCHAR},
-      pi_puid = #{pi_puid,jdbcType=INTEGER},
-      pi_pucode = #{pi_pucode,jdbcType=VARCHAR},
-      pi_said = #{pi_said,jdbcType=INTEGER},
-      pi_sacode = #{pi_sacode,jdbcType=VARCHAR},
-      pi_total = #{pi_total,jdbcType=DOUBLE},
-      pi_recordmanid = #{pi_recordmanid,jdbcType=INTEGER},
-      pi_recordman = #{pi_recordman,jdbcType=VARCHAR},
-      pi_recorddate = #{createTime,jdbcType=TIMESTAMP},
-      pi_status = #{pi_status,jdbcType=VARCHAR},
-      pi_statuscode = #{pi_statuscode,jdbcType=VARCHAR},
-      pi_printstatus = #{pi_printstatus,jdbcType=VARCHAR},
-      pi_printstatuscode = #{pi_printstatuscode,jdbcType=VARCHAR},
-      companyid = #{companyId,jdbcType=INTEGER},
-      updaterid = #{updaterId,jdbcType=INTEGER},
-      updatetime = #{updateTime,jdbcType=TIMESTAMP},
-      pi_text1 = #{pi_text1,jdbcType=VARCHAR},
-      pi_text2 = #{pi_text2,jdbcType=VARCHAR},
-      pi_text3 = #{pi_text3,jdbcType=VARCHAR},
-      pi_text4 = #{pi_text4,jdbcType=VARCHAR},
-      pi_text5 = #{pi_text5,jdbcType=VARCHAR},
-      pi_address = #{pi_address,jdbcType=LONGVARCHAR},
-      pi_auditdate = #{pi_auditdate,jdbcType=TIMESTAMP},
-      pi_auditman = #{pi_auditman,jdbcType=VARCHAR},
-      pi_remark = #{pi_remark,jdbcType=VARCHAR}
-    where pi_id = #{id,jdbcType=INTEGER}
-  </update>
+
 
   <select id="validateCodeWhenInsert"  resultType="int">
     select count(1) from prodinout where pi_inoutno = #{pi_inoutno} and companyid = #{companyId}
@@ -472,6 +430,11 @@
       DELETE FROM prodinout WHERE PI_CLASS=#{type} AND PI_INOUTNO=#{code} AND COMPANYID=#{companyId}
   </delete>
 
+  <update id="updateCreator">
+    update prodinout set creatorId = #{userId} , creatorName=#{userName} where pi_id=#{id}
+  </update>
+
+
     <select id="post" parameterMap="postParamMap" statementType="CALLABLE">
         CALL SP_COMMITPRODINOUT(?, ?, ?, ?, ?)
     </select>

+ 4 - 0
base-servers/account/account-dto/pom.xml

@@ -22,6 +22,10 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>commons-dto</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>file-dto</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 39 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyDTO.java

@@ -1,8 +1,11 @@
 package com.usoftchina.saas.account.dto;
 
+import com.usoftchina.saas.file.dto.FileInfoDTO;
 import io.swagger.annotations.ApiModel;
 
 import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author yingp
@@ -21,6 +24,42 @@ public class CompanyDTO implements Serializable{
     private String businessCode;
     private String address;
     private String logoUrl;
+    private String tel;
+    private String fax;
+    private String signet;      //电子章
+    private List<Map<String, FileInfoDTO>> fileInfoList;
+
+    public List<Map<String, FileInfoDTO>> getFileInfoList() {
+        return fileInfoList;
+    }
+
+    public void setFileInfoList(List<Map<String, FileInfoDTO>> fileInfoList) {
+        this.fileInfoList = fileInfoList;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getSignet() {
+        return signet;
+    }
+
+    public void setSignet(String signet) {
+        this.signet = signet;
+    }
     private Long uu;
 
     public Long getId() {

+ 41 - 5
base-servers/account/account-dto/src/main/java/com/usoftchina/saas/account/dto/CompanyRegDTO.java

@@ -10,6 +10,7 @@ import java.io.Serializable;
  */
 @ApiModel(value = "CompanyReg", description = "公司注册信息")
 public class CompanyRegDTO implements Serializable{
+    private Long id;
     /**
      * 唯一名称
      */
@@ -19,7 +20,42 @@ public class CompanyRegDTO implements Serializable{
      */
     private String businessCode;
     private String address;
-    private String logoUrl;
+    private String logoId;
+    private String tel;
+    private String fax;
+    private String signet;      //电子章
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getSignet() {
+        return signet;
+    }
+
+    public void setSignet(String signet) {
+        this.signet = signet;
+    }
 
     public String getName() {
         return name;
@@ -46,11 +82,11 @@ public class CompanyRegDTO implements Serializable{
     }
 
     public String getLogoUrl() {
-        return logoUrl;
+        return logoId;
     }
 
-    public void setLogoUrl(String logoUrl) {
-        this.logoUrl = logoUrl;
+    public void setLogoUrl(String logoId) {
+        this.logoId = logoId;
     }
 
     @Override
@@ -59,7 +95,7 @@ public class CompanyRegDTO implements Serializable{
                 "name='" + name + '\'' +
                 ", businessCode='" + businessCode + '\'' +
                 ", address='" + address + '\'' +
-                ", logoUrl='" + logoUrl + '\'' +
+                ", logoUrl='" + logoId + '\'' +
                 '}';
     }
 }

+ 12 - 0
base-servers/account/account-server/pom.xml

@@ -21,10 +21,18 @@
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>account-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>file-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.saas</groupId>
             <artifactId>auth-client</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>file-dto</artifactId>
+        </dependency>
         <!-- db -->
         <dependency>
             <groupId>mysql</groupId>
@@ -34,6 +42,10 @@
             <groupId>org.mybatis.spring.boot</groupId>
             <artifactId>mybatis-spring-boot-starter</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+        </dependency>
         <!-- sleuth -->
         <dependency>
             <groupId>org.springframework.cloud</groupId>

+ 2 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/AccountApplication.java

@@ -5,6 +5,7 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 /**
@@ -13,6 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
  */
 @SpringBootApplication
 @EnableEurekaClient
+@EnableFeignClients("com.usoftchina.saas")
 @EnableTransactionManagement
 @MapperScan(basePackages = "com.usoftchina.saas.account.mapper")
 @EnableAuthClient

+ 9 - 2
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/AccountController.java

@@ -9,8 +9,11 @@ import com.usoftchina.saas.account.service.RoleService;
 import com.usoftchina.saas.account.vo.CompanyBaseVO;
 import com.usoftchina.saas.auth.client.annotation.IgnoreAuth;
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.ExceptionCode;
+import com.usoftchina.saas.page.PageDefault;
+import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.RegexpUtils;
@@ -321,9 +324,13 @@ public class AccountController {
         return Result.success();
     }
 
+    /**
+     * 账户角色列表
+     * @return
+     */
     @GetMapping("/accountRole/list")
-    public Result getAccountRole(){
-        return Result.success(accountService.selectAccountRole());
+    public Result getAccountRole(@PageDefault(number = 1, size = 10) PageRequest pageRequest, ListReqDTO listReqDTO){
+        return Result.success(accountService.selectAccountRole(pageRequest, listReqDTO));
     }
 
     /**

+ 12 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/controller/CompanyController.java

@@ -8,10 +8,14 @@ import com.usoftchina.saas.account.service.CompanyService;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.exception.ExceptionCode;
+import com.usoftchina.saas.file.dto.FileInfoDTO;
 import com.usoftchina.saas.utils.BeanMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * @author yingp
  * @date 2018/10/2
@@ -47,6 +51,12 @@ public class CompanyController {
         return Result.success();
     }
 
+    @PostMapping("/save")
+    public Result save(@RequestBody CompanyRegDTO companyRegDTO){
+        companyService.update(companyRegDTO);
+        return Result.success();
+    }
+
     /**
      * 从其他平台复制已注册企业信息
      *
@@ -143,8 +153,10 @@ public class CompanyController {
     @GetMapping(path = "/read/current")
     public Result<CompanyDTO> getCurrentCompany() {
         Company company = companyService.findByPrimaryKey(BaseContextHolder.getCompanyId());
+        List<Map<String, FileInfoDTO>> fileInfoList = companyService.getFileByCompany(company);
         if (null != company) {
             CompanyDTO companyDTO = BeanMapper.map(company, CompanyDTO.class);
+            companyDTO.setFileInfoList(fileInfoList);
             return Result.success(companyDTO);
         }
         return Result.error(ExceptionCode.COMPANY_NOT_EXIST);

+ 7 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/AccountRoleMapper.java

@@ -49,5 +49,11 @@ public interface AccountRoleMapper {
      */
     void deleteByRoleId(@Param("roleId") Long roleId);
 
-    List<AccountRoleDTO> selectAccountRole();
+    List<AccountRoleDTO> selectAccountRole(@Param("condition") String condition, @Param("companyId") Long companyId);
+
+    /**
+     * 解除账户绑定的所有角色
+     * @param id
+     */
+    void unBindRolesById(Long id);
 }

+ 7 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/mapper/CompanyMapper.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.account.mapper;
 
+import com.usoftchina.saas.account.dto.CompanyRegDTO;
 import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.vo.CompanyBaseVO;
 import org.apache.ibatis.annotations.Param;
@@ -75,5 +76,10 @@ public interface CompanyMapper {
      */
     int deleteByPrimaryKey(@Param("id") Long id);
 
-
+    /**
+     * 更新
+     * @param companyRegDTO
+     * @return
+     */
+    int updateByPrimaryKeySelective(CompanyRegDTO companyRegDTO);
 }

+ 28 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/po/Company.java

@@ -24,6 +24,34 @@ public class Company implements Serializable {
      * 企业logo
      */
     private String logoUrl;
+    private String tel;
+    private String fax;
+    private String signet;
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getFax() {
+        return fax;
+    }
+
+    public void setFax(String fax) {
+        this.fax = fax;
+    }
+
+    public String getSignet() {
+        return signet;
+    }
+
+    public void setSignet(String signet) {
+        this.signet = signet;
+    }
+
     private Date createTime;
     private long creatorId;
     private Date updateTime;

+ 4 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/AccountService.java

@@ -1,8 +1,11 @@
 package com.usoftchina.saas.account.service;
 
+import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import com.usoftchina.saas.account.po.Account;
 import com.usoftchina.saas.account.po.RoleResource;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
+import com.usoftchina.saas.page.PageRequest;
 
 import java.util.List;
 
@@ -129,7 +132,7 @@ public interface AccountService {
      * 账号+角色信息列表
      * @return
      */
-    List<AccountRoleDTO> selectAccountRole();
+    PageInfo<AccountRoleDTO> selectAccountRole(PageRequest pageRequest, ListReqDTO listReqDTO);
 
     /**
      * 解除个人账号与角色的绑定

+ 17 - 0
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/CompanyService.java

@@ -1,9 +1,12 @@
 package com.usoftchina.saas.account.service;
 
+import com.usoftchina.saas.account.dto.CompanyRegDTO;
 import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.vo.CompanyBaseVO;
+import com.usoftchina.saas.file.dto.FileInfoDTO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author yingp
@@ -50,6 +53,14 @@ public interface CompanyService {
      */
     Company findByPrimaryKey(Long id);
 
+    /**
+     * 查找公司的附件信息
+     *
+     * @param company
+     * @return
+     */
+    List<Map<String,FileInfoDTO>> getFileByCompany(Company company);
+
     /**
      * 按个人账户查找全部绑定企业
      *
@@ -81,4 +92,10 @@ public interface CompanyService {
      * @param appId
      */
     void unbindApp(long companyId, String appId);
+
+    /**
+     * 更新公司信息
+     * @param companyRegDTO
+     */
+    void update(CompanyRegDTO companyRegDTO);
 }

+ 21 - 2
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/AccountServiceImpl.java

@@ -1,5 +1,7 @@
 package com.usoftchina.saas.account.service.impl;
 
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.usoftchina.saas.account.cache.AccountCache;
 import com.usoftchina.saas.account.dto.AccountRoleDTO;
 import com.usoftchina.saas.account.mapper.AccountCompanyMapper;
@@ -11,7 +13,9 @@ import com.usoftchina.saas.account.po.Role;
 import com.usoftchina.saas.account.po.RoleResource;
 import com.usoftchina.saas.account.service.AccountService;
 import com.usoftchina.saas.account.service.RoleService;
+import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.page.PageRequest;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -121,6 +125,7 @@ public class AccountServiceImpl implements AccountService {
 
     @Override
     public void bindRoles(Long accountId, String roleIds) {
+        accountRoleMapper.unBindRolesById(accountId);
         String[] array = roleIds.split(",");
         for (int i = 0; i < array.length; i++){
             bindRole(accountId, Long.parseLong(array[i]));
@@ -128,8 +133,22 @@ public class AccountServiceImpl implements AccountService {
     }
 
     @Override
-    public List<AccountRoleDTO> selectAccountRole(){
-        return accountRoleMapper.selectAccountRole();
+    public PageInfo<AccountRoleDTO> selectAccountRole(PageRequest page, ListReqDTO listReqDTO){
+        PageHelper.startPage(page.getNumber(), page.getSize());
+        List<AccountRoleDTO> accountRoleDTOList = getList(listReqDTO);
+        //取分页信息
+        PageInfo<AccountRoleDTO> pageInfo = new PageInfo<AccountRoleDTO>(accountRoleDTOList);
+        return pageInfo;
+    }
+
+    private List<AccountRoleDTO> getList(ListReqDTO listReqDTO) {
+        Long companyId = BaseContextHolder.getCompanyId();
+        String condition = listReqDTO.getFinalCondition();
+        if(condition == null){
+            condition = "1=1";
+        }
+        List<AccountRoleDTO> AccountRoleDTOList = accountRoleMapper.selectAccountRole(condition, companyId);
+        return AccountRoleDTOList;
     }
 
     @Override

+ 29 - 2
base-servers/account/account-server/src/main/java/com/usoftchina/saas/account/service/impl/CompanyServiceImpl.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.account.service.impl;
 
+import com.usoftchina.saas.account.dto.CompanyRegDTO;
 import com.usoftchina.saas.account.mapper.AccountCompanyMapper;
 import com.usoftchina.saas.account.mapper.CompanyAppMapper;
 import com.usoftchina.saas.account.mapper.CompanyMapper;
@@ -7,12 +8,14 @@ import com.usoftchina.saas.account.po.Company;
 import com.usoftchina.saas.account.service.CompanyService;
 import com.usoftchina.saas.account.vo.CompanyBaseVO;
 import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.file.api.FileApi;
+import com.usoftchina.saas.file.dto.FileInfoDTO;
 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.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author yingp
@@ -30,6 +33,9 @@ public class CompanyServiceImpl implements CompanyService{
     @Autowired
     private CompanyAppMapper companyAppMapper;
 
+    @Autowired
+    private FileApi fileApi;
+
     @Override
     public boolean save(Company company) {
         Date nowDate = new Date();
@@ -41,6 +47,13 @@ public class CompanyServiceImpl implements CompanyService{
         return companyMapper.insert(company) > 0;
     }
 
+    @Override
+    public void update(CompanyRegDTO companyRegDTO){
+        if (companyRegDTO.getId() > 0) {
+            companyMapper.updateByPrimaryKeySelective(companyRegDTO);
+        }
+    }
+
     @Override
     public Company findByName(String name) {
         return companyMapper.selectByName(name);
@@ -61,6 +74,20 @@ public class CompanyServiceImpl implements CompanyService{
         return companyMapper.selectByPrimaryKey(id);
     }
 
+    @Override
+    public List<Map<String, FileInfoDTO>> getFileByCompany(Company company){
+        List<Map<String,FileInfoDTO>> fileInfoList = new ArrayList<Map<String, FileInfoDTO>>();
+        Map<String, FileInfoDTO> fileInfoMap = new HashMap<String, FileInfoDTO>();
+        if (!StringUtils.isEmpty(company.getLogoUrl())){
+            fileInfoMap.put("logo", fileApi.getFileInfoByPath(company.getLogoUrl()).getData());
+        }
+        if (!StringUtils.isEmpty(company.getSignet())){
+            fileInfoMap.put("signet", fileApi.getFileInfoByPath(company.getSignet()).getData());
+        }
+        fileInfoList.add(fileInfoMap);
+        return fileInfoList;
+    }
+
     @Override
     public List<CompanyBaseVO> findBaseByAccountId(Long accountId) {
         return companyMapper.selectBaseByAccountId(accountId);

+ 11 - 0
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -21,6 +21,17 @@
         FROM ac_account a
         left join ac_account_role b on a.id=b.account_id
         left join ac_role c  on b.role_id = c.id
+        <where>
+            <if test="condition!=null">
+                ${condition}
+            </if>
+            <if test="companyId!=null">
+                AND C.COMPANY_ID = #{companyId}
+            </if>
+        </where>
         group by a.id,a.username,a.realname,a.email,a.mobile
     </select>
+    <delete id="unBindRolesById" parameterType="java.lang.Long">
+        DELETE FROM AC_ACCOUNT_COMPANY WHERE ACCOUNT_ID = #{id}
+    </delete>
 </mapper>

+ 32 - 4
base-servers/account/account-server/src/main/resources/mapper/CompanyMapper.xml

@@ -12,6 +12,11 @@
         <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="updater_id" jdbcType="BIGINT" property="updaterId"/>
         <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="fax" jdbcType="VARCHAR" property="fax"/>
+        <result column="tel" jdbcType="VARCHAR" property="tel"/>
+        <result column="signet" jdbcType="VARCHAR" property="signet"/>
+        <result column="uu" jdbcType="VARCHAR" property="uu"/>
+        <result column="logo_url" jdbcType="VARCHAR" property="logoUrl"/>
     </resultMap>
     <resultMap id="BaseResultMap" type="com.usoftchina.saas.account.vo.CompanyBaseVO">
         <id column="id" jdbcType="BIGINT" property="id"/>
@@ -19,14 +24,16 @@
         <result column="logo_url" jdbcType="VARCHAR" property="logoUrl"/>
     </resultMap>
     <sql id="baseColumns">
-        id,name,business_code,address,uu,creator_id,create_time,updater_id,update_time
+        id,name,business_code,address,uu,creator_id,create_time,updater_id,update_time,fax,tel,signet,uu,logo_url
     </sql>
     <insert id="insert" parameterType="com.usoftchina.saas.account.po.Company"
             useGeneratedKeys="true" keyProperty="id">
-        insert into ac_company(name, business_code, address, logo_url, uu, creator_id, create_time, updater_id, update_time)
+        insert into ac_company(name, business_code, address, logo_url, creator_id, create_time, updater_id, update_time,
+        tel, fax, signet, uu)
         values (#{name,jdbcType=VARCHAR}, #{businessCode,jdbcType=VARCHAR},
-        #{address,jdbcType=VARCHAR}, #{logoUrl,jdbcType=VARCHAR}, #{uu,jdbcType=BIGINT}, #{creatorId,jdbcType=BIGINT},
-        #{createTime,jdbcType=TIMESTAMP}, #{updaterId,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP})
+        #{address,jdbcType=VARCHAR}, #{logoUrl,jdbcType=VARCHAR}, #{creatorId,jdbcType=BIGINT},
+        #{createTime,jdbcType=TIMESTAMP}, #{updaterId,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP},
+        #{tel,jdbcType=VARCHAR}, #{fax,jdbcType=VARCHAR}, #{signet,jdbcType=VARCHAR}, #{uu,jdbcType=VARCHAR})
     </insert>
     <insert id="insertSelective" parameterType="com.usoftchina.saas.account.po.Company"
             useGeneratedKeys="true" keyProperty="id">
@@ -109,4 +116,25 @@
     <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
         delete from ac_company where id=#{id,jdbcType=BIGINT}
     </delete>
+    <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.account.po.Company">
+        UPDATE ac_company
+        <set>
+            <if test="address != null">
+                address = #{address,jdbcType=VARCHAR},
+            </if>
+            <if test="logoUrl != null">
+                logo_url = #{logoUrl,jdbcType=VARCHAR},
+            </if>
+            <if test="tel != null">
+                tel = #{tel,jdbcType=VARCHAR},
+            </if>
+            <if test="fax != null">
+                fax = #{fax,jdbcType=VARCHAR},
+            </if>
+            <if test="signet != null">
+                signet = #{signet,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where id = #{id}
+    </update>
 </mapper>

+ 3 - 4
base-servers/auth/auth-common/src/main/java/com/usoftchina/saas/auth/common/cookie/CookieInfo.java

@@ -3,7 +3,6 @@ package com.usoftchina.saas.auth.common.cookie;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 
 import java.io.Serializable;
-import java.util.Date;
 
 /**
  * @author yingp
@@ -105,7 +104,7 @@ public class CookieInfo implements Serializable {
     /**
      * 上次登录时间
      */
-    private Date lastLoginTime;
+    private Long lastLoginTime;
 
     public Long getUserUU() {
         return userUU;
@@ -243,11 +242,11 @@ public class CookieInfo implements Serializable {
         this.appId = appId;
     }
 
-    public Date getLastLoginTime() {
+    public Long getLastLoginTime() {
         return lastLoginTime;
     }
 
-    public void setLastLoginTime(Date lastLoginTime) {
+    public void setLastLoginTime(Long lastLoginTime) {
         this.lastLoginTime = lastLoginTime;
     }
 

+ 20 - 8
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -21,16 +21,21 @@ import com.usoftchina.saas.exception.BizException;
 import com.usoftchina.saas.exception.ExceptionCode;
 import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
+import com.usoftchina.saas.server.error.ServletErrorUtils;
 import com.usoftchina.saas.socket.api.SocketMessageApi;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.JsonUtils;
 import com.usoftchina.saas.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * @author yingp
@@ -67,6 +72,8 @@ public class AuthController {
     @Autowired
     private SocketMessageApi socketMessageApi;
 
+    private Logger logger = LoggerFactory.getLogger(AuthController.class);
+
     /**
      * 登录认证获取token
      *
@@ -111,14 +118,15 @@ public class AuthController {
     }
 
     /**
-     * 账户中心登录回调
+     * 账户中心登录时jsonp回调
      *
      * @param clientId 客户端唯一标志,发起请求到账户中心时带上
      * @param info
      * @return
      */
-    @PostMapping("/sso/callback")
-    public Result ssoCallback(HttpServletRequest request, @RequestParam String clientId, CookieInfo info) {
+    @GetMapping("/sso/callback/{clientId}")
+    public void ssoCallback(HttpServletRequest request, HttpServletResponse response,
+                            @PathVariable(required = false) String clientId, CookieInfo info, String callback) throws IOException{
         if (null != info && null != info.getMobile()) {
             AccountDTO accountDTO = null;
             Result<AccountDTO> result = accountApi.getAccount(info.getMobile());
@@ -127,7 +135,9 @@ public class AuthController {
                     // 新用户,自动注册
                     accountDTO = createAccountByCookieInfo(info);
                 } else {
-                    return Result.error(result.getCode(), result.getMessage());
+                    logger.error(result.getMessage());
+                    ServletErrorUtils.writeJsonPMessage(response, callback, false);
+                    return;
                 }
             } else {
                 accountDTO = result.getData();
@@ -136,7 +146,9 @@ public class AuthController {
                     accountDTO.setUu(info.getUserUU());
                     Result updateResult = accountApi.update(BeanMapper.map(accountDTO, AccountUpdateDTO.class));
                     if (!updateResult.isSuccess()) {
-                        return Result.error(updateResult.getCode(), updateResult.getMessage());
+                        logger.error(updateResult.getMessage());
+                        ServletErrorUtils.writeJsonPMessage(response, callback, false);
+                        return;
                     }
                 }
             }
@@ -155,11 +167,11 @@ public class AuthController {
                 JwtInfo jwtInfo = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername(), accountDTO.getRealname());
                 JwtToken jwtToken = JwtHelper.generateToken(jwtInfo, privateKeyPath, expire);
                 TokenDTO tokenDTO = BeanMapper.map(jwtToken, TokenDTO.class);
-                socketMessageApi.sendToClient(clientId, JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
+                socketMessageApi.sendToClient(clientId, "/sso/callback",
+                        JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
             }
-            return Result.success();
+            ServletErrorUtils.writeJsonPMessage(response, callback, true);
         }
-        return Result.error(ExceptionCode.COOKIE_ILLEGAL_ARGUMENT);
     }
 
     /**

+ 13 - 13
base-servers/file/file-api/src/main/java/com/usoftchina/saas/file/api/FileApi.java

@@ -39,7 +39,7 @@ public interface FileApi {
      * @return
      */
     @PostMapping(value = "/folder")
-    Result<FolderDTO> createFolder(FolderSaveDTO newFolder);
+    Result<FolderDTO> createFolder(@RequestBody FolderSaveDTO newFolder);
 
     /**
      * 根据id查看文件详情
@@ -57,7 +57,7 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/info")
-    Result<FileInfoDTO> getFileInfoByPath(@RequestParam String path);
+    Result<FileInfoDTO> getFileInfoByPath(@RequestParam("path") String path);
 
     /**
      * 查看子文件
@@ -66,7 +66,7 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/list")
-    Result<List<FileInfoDTO>> listFiles(Long folderId);
+    Result<List<FileInfoDTO>> listFiles(@RequestParam("folderId") Long folderId);
 
     /**
      * 上传文件到指定文件夹
@@ -77,7 +77,7 @@ public interface FileApi {
      * @throws Exception
      */
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    Result<FileInfoDTO> upload(Long folderId, @RequestPart(value = "file") MultipartFile file) throws Exception;
+    Result<FileInfoDTO> upload(@RequestParam("folderId") Long folderId, @RequestPart(value = "file") MultipartFile file) throws Exception;
 
     /**
      * 文件下载
@@ -86,7 +86,7 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/download/{id}")
-    byte[] download(@PathVariable Long id);
+    byte[] download(@PathVariable("id") Long id);
 
     /**
      * 文件下载
@@ -95,7 +95,7 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/download")
-    byte[] downloadByPath(@RequestParam String path);
+    byte[] downloadByPath(@RequestParam("path") String path);
 
     /**
      * 删除文件
@@ -105,8 +105,8 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/delete/{id}")
-    Result delete(@PathVariable Long id,
-                  @RequestParam(required = false, defaultValue = "false") Boolean purge);
+    Result delete(@PathVariable("id") Long id,
+                  @RequestParam(required = false, defaultValue = "false", value = "purge") Boolean purge);
 
     /**
      * 删除文件
@@ -116,8 +116,8 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/delete")
-    Result deleteByPath(@PathVariable Long id,
-                  @RequestParam(required = false, defaultValue = "false") Boolean purge);
+    Result deleteByPath(@PathVariable("id") Long id,
+                  @RequestParam(required = false, defaultValue = "false", value = "purge") Boolean purge);
 
     /**
      * 还原文件
@@ -126,7 +126,7 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/restore/{id}")
-    Result restore(@PathVariable Long id);
+    Result restore(@PathVariable("id") Long id);
 
     /**
      * 还原文件
@@ -135,7 +135,7 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/restore")
-    Result restoreByPath(@RequestParam String path);
+    Result restoreByPath(@RequestParam("path") String path);
 
     /**
      * 移动文件到文件夹
@@ -145,5 +145,5 @@ public interface FileApi {
      * @return
      */
     @GetMapping(value = "/move")
-    Result move(@RequestParam Long fileId, @RequestParam Long folderId);
+    Result move(@RequestParam("fileId") Long fileId, @RequestParam("folderId") Long folderId);
 }

+ 2 - 0
base-servers/file/file-server/src/main/java/com/usoftchina/saas/file/FileApplication.java

@@ -10,6 +10,7 @@ import org.springframework.context.annotation.EnableMBeanExport;
 import org.springframework.context.annotation.Import;
 import org.springframework.jmx.support.RegistrationPolicy;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 /**
  * @author yingp
@@ -22,6 +23,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableAuthClient
 @Import(FdfsClientConfig.class)
 @EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
+@EnableSwagger2
 public class FileApplication {
     public static void main(String[] args) {
         SpringApplication.run(FileApplication.class, args);

+ 16 - 16
base-servers/file/file-server/src/main/java/com/usoftchina/saas/file/controller/FileController.java

@@ -82,7 +82,7 @@ public class FileController {
 
     @ApiOperation(value = "创建文件夹")
     @PostMapping(value = "/folder")
-    public Result<FolderDTO> createFolder(FolderSaveDTO newFolder) {
+    public Result<FolderDTO> createFolder(@RequestBody FolderSaveDTO newFolder) {
         BizAssert.notNull(newFolder.getName(), ExceptionCode.FOLDER_NAME_EMPTY);
         // 检查父文件夹
         FileInfo parent = checkFolder(newFolder.getFolderId());
@@ -93,7 +93,7 @@ public class FileController {
 
     @ApiOperation(value = "上传文件")
     @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public Result<FileInfoDTO> upload(Long folderId, @RequestPart(value = "file") MultipartFile file) throws Exception {
+    public Result<FileInfoDTO> upload(@RequestParam("folderId") Long folderId, @RequestPart(value = "file") MultipartFile file) throws Exception {
         // 检查父文件夹
         FileInfo parent = checkFolder(folderId);
         FileInfo info = FileInfo.newFile(file).folder(parent.getId())
@@ -104,7 +104,7 @@ public class FileController {
 
     @ApiOperation(value = "下载文件")
     @GetMapping(value = "/download/{id}")
-    public void download(@PathVariable Long id, HttpServletResponse response) throws Exception {
+    public void download(@PathVariable("id") Long id, HttpServletResponse response) throws Exception {
         FileInfo info = fileService.findByPrimaryKey(id);
         if (null == info) {
             throw new BizException(ExceptionCode.FILE_NOT_EXISTS);
@@ -135,7 +135,7 @@ public class FileController {
 
     @ApiOperation(value = "下载文件")
     @GetMapping(value = "/download")
-    public void download(@RequestParam String path, HttpServletResponse response) throws Exception {
+    public void download(@RequestParam("path") String path, HttpServletResponse response) throws Exception {
         FileInfo info = fileService.findByFullPath(path);
         if (null == info) {
             throw new BizException(ExceptionCode.FILE_NOT_EXISTS);
@@ -145,7 +145,7 @@ public class FileController {
 
     @ApiOperation(value = "查看文件")
     @GetMapping(value = "/view/{id}")
-    public void view(@PathVariable Long id, HttpServletResponse response) throws Exception {
+    public void view(@PathVariable("id") Long id, HttpServletResponse response) throws Exception {
         FileInfo info = fileService.findByPrimaryKey(id);
         if (null == info) {
             throw new BizException(ExceptionCode.FILE_NOT_EXISTS);
@@ -169,7 +169,7 @@ public class FileController {
 
     @ApiOperation(value = "查看文件")
     @GetMapping(value = "/view")
-    public void view(@RequestParam String path, HttpServletResponse response) throws Exception {
+    public void view(@RequestParam("path") String path, HttpServletResponse response) throws Exception {
         FileInfo info = fileService.findByFullPath(path);
         if (null == info) {
             throw new BizException(ExceptionCode.FILE_NOT_EXISTS);
@@ -179,7 +179,7 @@ public class FileController {
 
     @ApiOperation(value = "查看文件信息")
     @GetMapping(value = "/info/{id}")
-    public Result<FileInfoDTO> getFileInfo(@PathVariable Long id) {
+    public Result<FileInfoDTO> getFileInfo(@PathVariable("id") Long id) {
         FileInfo info = fileService.findByPrimaryKey(id);
         if (null != info) {
             return Result.success(BeanMapper.map(info, FileInfoDTO.class));
@@ -189,7 +189,7 @@ public class FileController {
 
     @ApiOperation(value = "查看文件信息")
     @GetMapping(value = "/info")
-    public Result<FileInfoDTO> getFileInfo(@RequestParam String path) {
+    public Result<FileInfoDTO> getFileInfo(@RequestParam("path") String path) {
         FileInfo info = fileService.findByFullPath(path);
         if (null != info) {
             return Result.success(BeanMapper.map(info, FileInfoDTO.class));
@@ -199,7 +199,7 @@ public class FileController {
 
     @ApiOperation(value = "查看子文件")
     @GetMapping(value = "/list")
-    public Result<List<FileInfoDTO>> listFiles(Long folderId) {
+    public Result<List<FileInfoDTO>> listFiles(@RequestParam("folderId") Long folderId) {
         List<FileInfo> files = fileService.findByFolderId(checkFolder(folderId).getId());
         return Result.success(BeanMapper.mapList(files, FileInfoDTO.class));
     }
@@ -287,8 +287,8 @@ public class FileController {
 
     @ApiOperation(value = "删除文件")
     @GetMapping(value = "/delete/{id}")
-    public Result delete(@PathVariable Long id,
-                         @RequestParam(required = false, defaultValue = "false") Boolean purge) {
+    public Result delete(@PathVariable("id") Long id,
+                         @RequestParam(required = false, defaultValue = "false", value = "purge") Boolean purge) {
         FileInfo info = fileService.findByPrimaryKey(id);
         if (null != info) {
             if (purge) {
@@ -302,8 +302,8 @@ public class FileController {
 
     @ApiOperation(value = "删除文件")
     @GetMapping(value = "/delete")
-    public Result delete(@RequestParam String path,
-                         @RequestParam(required = false, defaultValue = "false") Boolean purge) {
+    public Result delete(@RequestParam("id") String path,
+                         @RequestParam(required = false, defaultValue = "false", value = "purge") Boolean purge) {
         FileInfo info = fileService.findByFullPath(path);
         if (null != info) {
             if (purge) {
@@ -317,7 +317,7 @@ public class FileController {
 
     @ApiOperation(value = "还原文件")
     @GetMapping(value = "/restore/{id}")
-    public Result restore(@PathVariable Long id) {
+    public Result restore(@PathVariable("id") Long id) {
         FileInfo info = fileService.findByPrimaryKey(id);
         if (null != info) {
             cascadeRestore(info);
@@ -327,7 +327,7 @@ public class FileController {
 
     @ApiOperation(value = "还原文件")
     @GetMapping(value = "/restore")
-    public Result restore(@RequestParam String path) {
+    public Result restore(@RequestParam("path") String path) {
         FileInfo info = fileService.findByFullPath(path);
         if (null != info) {
             cascadeRestore(info);
@@ -337,7 +337,7 @@ public class FileController {
 
     @ApiOperation(value = "移动文件到文件夹")
     @GetMapping(value = "/move")
-    public Result move(@RequestParam Long fileId, @RequestParam Long folderId) {
+    public Result move(@RequestParam("fileId") Long fileId, @RequestParam("folderId") Long folderId) {
         FileInfo info = fileService.findByPrimaryKey(fileId);
         if (null != info) {
             info.setFolderId(folderId);

+ 1 - 6
base-servers/gateway-server/src/main/resources/application.yml

@@ -104,10 +104,6 @@ spring:
         - Path=/api/commons/**
         filters:
         - RewritePath=/api/commons/(?<segment>.*), /$\{segment}
-      - id: SOCKET-SERVER
-        uri: lb:ws://SOCKET-SERVER
-        predicates:
-        - Path=/ws/**
   redis:
     host: 192.168.253.12
     port: 6379
@@ -179,7 +175,6 @@ auth:
   public-key: auth/pub.key
   ignores:
     - /api/auth/authorize
-    - /api/auth/sso/callback
     - /api/account/account/register
     - /api/auth/info
-    - /ws/**
+    - /api/file/download

+ 10 - 5
base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/api/SocketMessageApi.java

@@ -2,8 +2,8 @@ package com.usoftchina.saas.socket.api;
 
 import com.usoftchina.saas.base.Result;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author yingp
@@ -15,18 +15,23 @@ public interface SocketMessageApi {
      * 发送信息给指定用户
      *
      * @param clientId
+     * @param dest
      * @param message
      * @return
      */
-    @PostMapping("/clients/{clientId}")
-    Result sendToClient(@PathVariable("clientId") String clientId, String message);
+    @PostMapping("/message/clients")
+    Result sendToClient(@RequestParam("clientId") String clientId,
+                        @RequestParam(value = "dest", required = false) String dest,
+                        @RequestParam("message") String message);
 
     /**
      * 广播信息
      *
+     * @param dest
      * @param message
      * @return
      */
-    @PostMapping("/clients")
-    Result sendToAllClients(String message);
+    @PostMapping("/message/clients/all")
+    Result sendToAllClients(@RequestParam(value = "dest", required = false) String dest,
+                            @RequestParam("message") String message);
 }

+ 23 - 8
base-servers/socket/socket-server/src/main/java/com/usoftchina/saas/socket/controller/MessageController.java

@@ -17,27 +17,42 @@ public class MessageController {
     @Resource
     private SimpMessagingTemplate simpMessagingTemplate;
 
-    @PostMapping("/clients/{clientId}")
-    public Result sendToClient(@PathVariable String clientId, String message) {
+    /**
+     * 发送信息给指定用户
+     *
+     * @param clientId
+     * @param dest
+     * @param message
+     * @return
+     */
+    @PostMapping("/clients")
+    public Result sendToClient(@RequestParam String clientId, String dest, @RequestParam String message) {
         /**
          * 前端使用
          * <pre>
-         *     stomp.subscribe('/clients/{clientId}/message', function(message){});
+         *     stomp.subscribe('/clients/{clientId}/{dest}', function(message){});
          * </pre>
          */
-        simpMessagingTemplate.convertAndSendToUser(clientId, "/message", message);
+        simpMessagingTemplate.convertAndSendToUser(clientId, dest, message);
         return Result.success();
     }
 
-    @PostMapping("/clients")
-    public Result sendToAllClients(String message) {
+    /**
+     * 广播信息
+     *
+     * @param dest
+     * @param message
+     * @return
+     */
+    @PostMapping("/clients/all")
+    public Result sendToAllClients(String dest, @RequestParam String message) {
         /**
          * 前端使用
          * <pre>
-         *     stomp.subscribe('/clients/message', function(message){});
+         *     stomp.subscribe('/clients/{dest}', function(message){});
          * </pre>
          */
-        simpMessagingTemplate.convertAndSend("/message", message);
+        simpMessagingTemplate.convertAndSend(dest, message);
         return Result.success();
     }
 }

+ 1 - 1
framework/server-starter/src/main/java/com/usoftchina/saas/server/ServerAutoConfiguration.java

@@ -38,7 +38,7 @@ public class ServerAutoConfiguration {
 //                }
 //                logger.error(ServletErrorUtils.buildMessage(request, cause), cause);
 //                try {
-//                    ServletErrorUtils.writerErrorResult(response, cause);
+//                    ServletErrorUtils.writeErrorResult(response, cause);
 //                } catch (IOException ex) {
 //                }
 //                return null;

+ 30 - 1
framework/server-starter/src/main/java/com/usoftchina/saas/server/error/ServletErrorUtils.java

@@ -43,10 +43,39 @@ public class ServletErrorUtils {
      * @throws IOException
      * @throws ServletException
      */
-    public static void writerErrorResult(HttpServletResponse response, Throwable e) throws IOException {
+    public static void writeErrorResult(HttpServletResponse response, Throwable e) throws IOException {
         response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
         PrintWriter writer = response.getWriter();
         writer.print(JsonUtils.toJsonString(Result.throwable(e)));
         writer.flush();
     }
+
+    public static void writeMessage(HttpServletResponse response, String text) throws IOException {
+        response.setContentType(MediaType.TEXT_HTML_VALUE);
+        response.setCharacterEncoding("UTF-8");
+        PrintWriter writer = response.getWriter();
+        writer.print(text);
+        writer.flush();
+    }
+
+    /**
+     * 输出jsonp
+     *
+     * @param response
+     * @param callbackFn
+     * @param success
+     * @throws IOException
+     */
+    public static void writeJsonPMessage(HttpServletResponse response, String callbackFn, boolean success) throws IOException {
+        response.setContentType(MediaType.TEXT_HTML_VALUE);
+        response.setCharacterEncoding("UTF-8");
+        PrintWriter writer = response.getWriter();
+        writer.print(buildJsonPMessage(callbackFn, success));
+        writer.flush();
+    }
+
+    public static String buildJsonPMessage(String callbackFn, boolean success) {
+        return String.format("%s({success:\"%s\"})", callbackFn, success ? 1 : 0);
+    }
+
 }

+ 1 - 1
framework/server-starter/src/main/java/com/usoftchina/saas/server/error/UnCaughtErrorFilter.java

@@ -30,7 +30,7 @@ public class UnCaughtErrorFilter extends OncePerRequestFilter {
                 cause = ((NestedServletException) ex).getRootCause();
             }
             logger.error(ServletErrorUtils.buildMessage(request, cause), cause);
-            ServletErrorUtils.writerErrorResult(response, cause);
+            ServletErrorUtils.writeErrorResult(response, cause);
         }
     }
 }

+ 7 - 8
frontend/saas-portal-web/src/css/main.css

@@ -379,7 +379,7 @@ main > section {
 .ts-mintext {
     position: absolute;
     top: 142px;
-    right: 380px;
+    right: 240px;
     color: white;
 }
 .ts-mintext p {
@@ -392,8 +392,8 @@ main > section {
     margin-left: -40px;
 }
 .ts-lefttext {
-    left: 300px;
-    width: 280px;
+    left: 40px;
+    width: 560px;
 }
 .ts-textleftimg {
     width: 40px;
@@ -434,7 +434,7 @@ main > section {
 .gn-beijing {
     width: 100%;
     position: absolute;
-    top: 242px;
+    top: 247px;
 }
 .gn-img {
     width: 100px;
@@ -467,7 +467,7 @@ main > section {
     left: 0;
 }
 .gn-hei>div {
-    height: 240px;
+    height: 245px;
 }
 .service-item {
     margin-bottom: 60px;
@@ -639,16 +639,15 @@ main > section {
     color: #fff;
 }
 .footer-section .qr{
-    width: 110px;
     overflow: hidden;
     text-align: right;
+    float: right;
 }
 .footer-section .qr .qr-top{
     overflow: hidden;
 }
 .footer-section .qr .qr-code{
-    float: right;
-    width: 90px;
+    width: 110px;
     font-size: 14px;
     color: #fff;
     text-align: center;

+ 0 - 0
frontend/saas-portal-web/src/img/gongneng/ xiao shou 3@3x.png → frontend/saas-portal-web/src/img/gongneng/xiao shou 3@3x.png


+ 7 - 7
frontend/saas-portal-web/src/index.html

@@ -304,7 +304,7 @@
 								<div class="ts-mintext">
 									<p><img class="ts-textimg" src="./img/assets/xunzhao@2x.png" alt="">迅速找到您想要的</p>
 									<p>寻找供应商资源</p>
-									<p>寻找产品资料 货源</p>
+									<p>寻找产品货源  寻找产品资料</p>
 								</div>
 							</div>
 						</div>
@@ -313,8 +313,8 @@
 								<img class="ts-minimg" style="left:0;" src="./img/assets/2.png" alt="">
 								<div class="ts-mintext ts-lefttext">
 									<p>直观看到您想看的<img class="ts-textleftimg" src="./img/assets/fen xi@2x.png" alt=""></p>
-									<p>月度销售额 采购额</p>
-									<p>经营指标实时看</p>
+									<p>每日订单量、收付款、月度销售分析、采购分析</p>
+									<p>让你成为企业经营老司机</p>
 								</div>
 							</div>
 							<div style="margin:50px 0;">
@@ -327,10 +327,10 @@
 							</div>
 							<div class="right right-text">
 								<img class="ts-minimg" src="./img/assets/1.png" alt="">
-								<div class="ts-mintext" style="right: 250px;">
+								<div class="ts-mintext" style="right: 145px;">
 									<p><img class="ts-textimg" src="./img/assets/kuaisu@2x.png" alt="">快速上手 生意简单做</p>
-									<p>移动端的体验</p>
-									<p>简单的业务线 让您三分钟上手</p>
+									<p>移动端的交互体验</p>
+									<p>简短清晰的业务流程 让你三分钟上手</p>
 								</div>
 							</div>
 						</div>
@@ -583,7 +583,7 @@
 						</ul>
 					</div>
 					
-					<div class="qr" style="float:right">
+					<div class="qr">
 						<div class="qr-top">
 							<div class="qr-tech qr-code">
 								<img src="./img/qr-tech.png" alt="">

+ 2 - 2
frontend/saas-web/app/Application.scss

@@ -99,8 +99,8 @@ body.launching {
 // toolbar button
 .x-btn-default-toolbar-small {
   color: #fff;
-  background-color: #308ee0;
-  border-color: #308ee0;
+  background-color: #35BAF6;
+  border-color: #35BAF6;
   min-width: 86px;
   transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
 

+ 29 - 0
frontend/saas-web/app/model/report/Purchase.js

@@ -0,0 +1,29 @@
+Ext.define('saas.model.report.Purchase', {
+    extend: 'saas.model.Base',
+
+    fields: [
+
+        { name: 'id', type: 'int' },
+        { name: 'pu_code', type: 'string' },
+        { name: 'pu_vendcode', type: 'string' },
+        { name: 'pu_vendname', type: 'string' },
+        { name: 'pu_acceptstatus', type: 'string' },
+        { name: 'pu_buyername', type: 'string' },
+        { name: 'pu_date', type: 'date' },
+        { name: 'pd_detno', type: 'int' },
+        { name: 'pd_prodcode', type: 'string' },
+        { name: 'pr_detail', type: 'string' },
+        { name: 'pr_spec', type: 'string' },
+        { name: 'pr_brand', type: 'string' },
+        { name: 'pr_unit', type: 'string' },
+        { name: 'pd_qyt', type: 'float' },
+        { name: 'pd_price', type: 'float' },
+        { name: 'pd_taxrate', type: 'float' },
+        { name: 'pd_total', type: 'float' },
+        { name: 'pd_taxprice', type: 'float' },
+        { name: 'pd_taxtotal', type: 'float' },
+        { name: 'pd_acceptqty', type: 'float' },
+        { name: 'pd_accepttotal', type: 'float' },
+        { name: 'pd_remark', type: 'string' },
+    ],
+});

+ 2 - 2
frontend/saas-web/app/util/BaseUtil.js

@@ -111,8 +111,8 @@ Ext.define('saas.util.BaseUtil', {
             return (/^(\d{4})-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/).test(str);
         },
 
-        getCurrentUse: function () {
-            return saas.util.State.get('session').account;
+        getCurrentUser: function () {
+            return saas.util.State.get('session') ? saas.util.State.get('session').account : null;
         },
 
         /**

+ 4 - 0
frontend/saas-web/app/util/FormUtil.js

@@ -252,6 +252,10 @@ Ext.define('saas.util.FormUtil', {
                         }else {
                             throw new Error('请求单据编号错误');
                         }
+                    }else {
+                        return {
+                            main: {},
+                        }
                     }
                 }).then(function(formData) {
                     var initData = form.initData;

+ 1 - 1
frontend/saas-web/app/view/core/chart/ChartBase.js

@@ -6,7 +6,7 @@ Ext.define('saas.view.core.chart.ChartBase', {
     ],
 
     height: 300,
-    bodyPadding: '16 0 16 0',
+    bodyPadding: 16,
 
     layout: 'fit',
 

+ 1 - 0
frontend/saas-web/app/view/core/form/ConDateField.js

@@ -12,6 +12,7 @@ Ext.define('saas.view.core.form.ConDateField', {
     defaults: {
         margin: '0 0 0 0'
     },
+    columnWidth: 0.5,
     defaultBindProperty: 'value',
     initComponent : function(){
         this.cls = (this.cls || '') + ' x-form-field-multi';

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

@@ -95,9 +95,18 @@ Ext.define('saas.view.core.form.FormPanel', {
                 hidden:'{!showAuditBtn}'
             },
             handler: "auditBtnClick",
+        }, {
+            cls:'x-formpanel-btn-white',
+            text:'打印',
+            hidden: true,
+            bind: {
+                // hidden: '{!id}'
+            },
+            handler:"onPrint"
         }, {
             cls:'x-formpanel-btn-white',
             text:'操作日志',
+            hidden: true,
             bind: {
                 hidden: '{!id}'
             },
@@ -194,8 +203,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', saas.util.BaseUtil.getCurrentUse().id);
-        viewModel.set('creator', saas.util.BaseUtil.getCurrentUse().realname);
+        viewModel.set('creatorId', saas.util.BaseUtil.getCurrentUser().id);
+        viewModel.set('creatorName', saas.util.BaseUtil.getCurrentUser().realname);
 
         if (statusCodeField) {
             var o = {};

Some files were not shown because too many files changed in this diff