local版使用mybatis-plus重写

master
toesbieya 6 years ago
parent 4c4360bf45
commit 0f60d33ea8
  1. BIN
      java/db/my.rar
  2. 12
      java/local/pom.xml
  3. 10
      java/local/src/main/java/cn/toesbieya/jxc/aspect/UserActionAspect.java
  4. 7
      java/local/src/main/java/cn/toesbieya/jxc/constant/DocConstant.java
  5. 7
      java/local/src/main/java/cn/toesbieya/jxc/constant/DocumentConstant.java
  6. 25
      java/local/src/main/java/cn/toesbieya/jxc/controller/BizDocumentHistoryController.java
  7. 6
      java/local/src/main/java/cn/toesbieya/jxc/controller/RecController.java
  8. 10
      java/local/src/main/java/cn/toesbieya/jxc/controller/StatisticController.java
  9. 20
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/HistoryController.java
  10. 29
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseInboundController.java
  11. 29
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/PurchaseOrderController.java
  12. 33
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOrderController.java
  13. 33
      java/local/src/main/java/cn/toesbieya/jxc/controller/doc/SellOutboundController.java
  14. 61
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/ManageController.java
  15. 35
      java/local/src/main/java/cn/toesbieya/jxc/controller/msg/UserController.java
  16. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/CategoryController.java
  17. 23
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/CustomerController.java
  18. 16
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/DepartmentController.java
  19. 17
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/ResourceController.java
  20. 18
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/RoleController.java
  21. 26
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/SupplierController.java
  22. 22
      java/local/src/main/java/cn/toesbieya/jxc/controller/sys/UserController.java
  23. 6
      java/local/src/main/java/cn/toesbieya/jxc/handler/GlobalExceptionHandler.java
  24. 8
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizDocHistoryMapper.java
  25. 15
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizDocumentHistoryMapper.java
  26. 29
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseInboundMapper.java
  27. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseInboundSubMapper.java
  28. 34
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseOrderMapper.java
  29. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizPurchaseOrderSubMapper.java
  30. 34
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOrderMapper.java
  31. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOrderSubMapper.java
  32. 29
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOutboundMapper.java
  33. 10
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizSellOutboundSubMapper.java
  34. 16
      java/local/src/main/java/cn/toesbieya/jxc/mapper/BizStockMapper.java
  35. 20
      java/local/src/main/java/cn/toesbieya/jxc/mapper/MsgMapper.java
  36. 7
      java/local/src/main/java/cn/toesbieya/jxc/mapper/MsgStateMapper.java
  37. 16
      java/local/src/main/java/cn/toesbieya/jxc/mapper/RecAttachmentMapper.java
  38. 9
      java/local/src/main/java/cn/toesbieya/jxc/mapper/RecLoginHistoryMapper.java
  39. 9
      java/local/src/main/java/cn/toesbieya/jxc/mapper/RecUserActionMapper.java
  40. 22
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysCategoryMapper.java
  41. 19
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysCustomerMapper.java
  42. 11
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysDepartmentMapper.java
  43. 7
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRegionMapper.java
  44. 12
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysResourceMapper.java
  45. 22
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysRoleMapper.java
  46. 19
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysSupplierMapper.java
  47. 26
      java/local/src/main/java/cn/toesbieya/jxc/mapper/SysUserMapper.java
  48. 8
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDoc.java
  49. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocHistory.java
  50. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizDocSub.java
  51. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseInbound.java
  52. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseInboundSub.java
  53. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrder.java
  54. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizPurchaseOrderSub.java
  55. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrder.java
  56. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOrderSub.java
  57. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOutbound.java
  58. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/BizSellOutboundSub.java
  59. 1
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysCustomer.java
  60. 1
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysResource.java
  61. 1
      java/local/src/main/java/cn/toesbieya/jxc/model/entity/SysSupplier.java
  62. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/CustomerVo.java
  63. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/PurchaseInboundVo.java
  64. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/PurchaseOrderVo.java
  65. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/ResourceVo.java
  66. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/SellOrderVo.java
  67. 27
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/SellOutboundVo.java
  68. 20
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/SupplierVo.java
  69. 7
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/result/PageResult.java
  70. 15
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocHistorySearch.java
  71. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocSearch.java
  72. 11
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/DocumentHistorySearch.java
  73. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/PurchaseInboundSearch.java
  74. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/PurchaseOrderSearch.java
  75. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SellOrderSearch.java
  76. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/search/SellOutboundSearch.java
  77. 2
      java/local/src/main/java/cn/toesbieya/jxc/model/vo/update/DocStatusUpdate.java
  78. 10
      java/local/src/main/java/cn/toesbieya/jxc/module/PermissionModule.java
  79. 14
      java/local/src/main/java/cn/toesbieya/jxc/module/request/RequestModule.java
  80. 34
      java/local/src/main/java/cn/toesbieya/jxc/schedule/DocTask.java
  81. 22
      java/local/src/main/java/cn/toesbieya/jxc/schedule/StatisticTask.java
  82. 75
      java/local/src/main/java/cn/toesbieya/jxc/service/AccountService.java
  83. 23
      java/local/src/main/java/cn/toesbieya/jxc/service/BizDocumentHistoryService.java
  84. 46
      java/local/src/main/java/cn/toesbieya/jxc/service/BizStockService.java
  85. 118
      java/local/src/main/java/cn/toesbieya/jxc/service/RecService.java
  86. 16
      java/local/src/main/java/cn/toesbieya/jxc/service/StatisticService.java
  87. 79
      java/local/src/main/java/cn/toesbieya/jxc/service/SysCategoryService.java
  88. 58
      java/local/src/main/java/cn/toesbieya/jxc/service/SysCustomerService.java
  89. 71
      java/local/src/main/java/cn/toesbieya/jxc/service/SysResourceService.java
  90. 56
      java/local/src/main/java/cn/toesbieya/jxc/service/SysRoleService.java
  91. 58
      java/local/src/main/java/cn/toesbieya/jxc/service/SysSupplierService.java
  92. 95
      java/local/src/main/java/cn/toesbieya/jxc/service/SysUserService.java
  93. 36
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizDocHistoryService.java
  94. 186
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseInboundService.java
  95. 142
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizPurchaseOrderService.java
  96. 151
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOrderService.java
  97. 180
      java/local/src/main/java/cn/toesbieya/jxc/service/doc/BizSellOutboundService.java
  98. 103
      java/local/src/main/java/cn/toesbieya/jxc/service/msg/MsgService.java
  99. 71
      java/local/src/main/java/cn/toesbieya/jxc/service/msg/MsgUserService.java
  100. 121
      java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysCategoryService.java
  101. Some files were not shown because too many files have changed in this diff Show More

Binary file not shown.

@ -16,7 +16,7 @@
<properties>
<java.version>1.8</java.version>
<mybatis.version>2.1.0</mybatis.version>
<mybatis-plus.version>3.3.2</mybatis-plus.version>
<pagehelper.version>1.2.12</pagehelper.version>
<socketio.version>1.7.18</socketio.version>
<guava.version>28.1-jre</guava.version>
@ -56,15 +56,15 @@
</dependency>
<!--mysql数据库相关-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>

@ -26,7 +26,7 @@ import java.lang.reflect.Method;
@Order(Integer.MAX_VALUE - 2)
public class UserActionAspect {
@Resource
private RecService recService;
private RecService service;
@Pointcut("@annotation(cn.toesbieya.jxc.annoation.UserAction)&&execution(cn.toesbieya.jxc.model.vo.Result cn.toesbieya.jxc..*.*(..))")
public void pointCut() {
@ -36,10 +36,13 @@ public class UserActionAspect {
@Around("pointCut()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
RecUserAction action = ThreadUtil.getAction();
if (action == null) {
return pjp.proceed();
}
action.setTime(System.currentTimeMillis());
MethodSignature signature = (MethodSignature) pjp.getSignature();
Method method = signature.getMethod();
Object[] args = pjp.getArgs();
@ -57,12 +60,13 @@ public class UserActionAspect {
Result result = (Result) pjp.proceed();
if (result.isSuccess()) {
recService.insertUserAction(action, UserActionEnum.SUCCESS);
action.setType(UserActionEnum.SUCCESS.getCode());
}
else {
action.setType(UserActionEnum.FAIL.getCode());
action.setError(result.getMsg());
recService.insertUserAction(action, UserActionEnum.FAIL);
}
service.insertUserAction(action);
return result;
}

@ -0,0 +1,7 @@
package cn.toesbieya.jxc.constant;
public interface DocConstant {
String UPDATE_DOC_LOCK_KEY = "UPDATE_DOC";
String[] DOC_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
String DOC_TYPE_REDIS_KEY = "DOC_ID";
}

@ -1,7 +0,0 @@
package cn.toesbieya.jxc.constant;
public interface DocumentConstant {
String UPDATE_DOCUMENTS_LOCK_KEY = "UPDATE_DOCUMENTS";
String[] DOCUMENT_TYPE = {"CGDD", "CGRK", "CGTH", "XSDD", "XSCK", "XSTH"};
String DOCUMENT_TYPE_REDIS_KEY = "documentsID";
}

@ -1,25 +0,0 @@
package cn.toesbieya.jxc.controller;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import cn.toesbieya.jxc.service.BizDocumentHistoryService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("document/history")
public class BizDocumentHistoryController {
@Resource
private BizDocumentHistoryService service;
@GetMapping("get")
public Result get(@RequestParam("pid") String pid) {
return Result.success(service.getByPid(pid));
}
@PostMapping("search")
public Result search(@RequestBody DocumentHistorySearch vo) {
return Result.success(service.search(vo));
}
}

@ -18,7 +18,7 @@ import javax.annotation.Resource;
@RequestMapping("record")
public class RecController {
@Resource
private RecService recService;
private RecService service;
@PostMapping("searchLoginHistory")
public Result searchLoginHistory(@RequestBody LoginHistorySearch vo) {
@ -27,7 +27,7 @@ public class RecController {
vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(recService.searchLoginHistory(vo));
return Result.success(service.searchLoginHistory(vo));
}
@PostMapping("searchUserAction")
@ -37,6 +37,6 @@ public class RecController {
vo.setUid(user.getId());
vo.setStartTime(DateUtil.getTimestampBeforeNow(7));
return Result.success(recService.searchUserAction(vo));
return Result.success(service.searchUserAction(vo));
}
}

@ -12,25 +12,25 @@ import javax.annotation.Resource;
@RequestMapping("statistic")
public class StatisticController {
@Resource
private StatisticService statisticService;
private StatisticService service;
@GetMapping("getFourBlock")
public Result getFourBlock() {
return Result.success(statisticService.getFourBlock());
return Result.success(service.getFourBlock());
}
@GetMapping("getDailyProfitStat")
public Result getDailyProfitStat() {
return Result.success(statisticService.getDailyProfitStat());
return Result.success(service.getDailyProfitStat());
}
@GetMapping("getDailyFinishOrder")
public Result getDailyFinishOrder() {
return Result.success(statisticService.getDailyFinishOrder());
return Result.success(service.getDailyFinishOrder());
}
@GetMapping("getTotalProfitGoods")
public Result getTotalProfitGoods() {
return Result.success(statisticService.getTotalProfitGoods());
return Result.success(service.getTotalProfitGoods());
}
}

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.model.vo.search.DocHistorySearch;
import cn.toesbieya.jxc.service.doc.BizDocHistoryService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("doc/history")
public class HistoryController {
@Resource
private BizDocHistoryService service;
@PostMapping("search")
public Result search(@RequestBody DocHistorySearch vo) {
return Result.success(service.search(vo));
}
}

@ -1,14 +1,15 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.doc.BizPurchaseInboundService;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.BizPurchaseInboundService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List;
@RestController
@RequestMapping("document/purchase/inbound")
public class BizPurchaseInboundController {
@RequestMapping("doc/purchase/inbound")
public class PurchaseInboundController {
@Resource
private BizPurchaseInboundService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizPurchaseInbound inbound = service.getById(id);
return inbound == null ? Result.fail("获取单据信息失败") : Result.success(inbound);
PurchaseInboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
}
@GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizPurchaseInboundController {
}
@PostMapping("add")
public Result add(@RequestBody BizPurchaseInbound vo) {
public Result add(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
@ -62,7 +63,7 @@ public class BizPurchaseInboundController {
}
@PostMapping("update")
public Result update(@RequestBody BizPurchaseInbound vo) {
public Result update(@RequestBody PurchaseInboundVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
@ -71,7 +72,7 @@ public class BizPurchaseInboundController {
}
@PostMapping("commit")
public Result commit(@RequestBody BizPurchaseInbound vo) {
public Result commit(@RequestBody PurchaseInboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
@ -89,18 +90,18 @@ public class BizPurchaseInboundController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) {
public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) {
public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) {
public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}

@ -1,13 +1,14 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.service.BizPurchaseOrderService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.doc.BizPurchaseOrderService;
import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List;
@RestController
@RequestMapping("document/purchase/order")
public class BizPurchaseOrderController {
@RequestMapping("doc/purchase/order")
public class PurchaseOrderController {
@Resource
private BizPurchaseOrderService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizPurchaseOrder order = service.getById(id);
return order == null ? Result.fail("获取单据信息失败") : Result.success(order);
PurchaseOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
}
@GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizPurchaseOrderController {
}
@PostMapping("add")
public Result add(@RequestBody BizPurchaseOrder vo) {
public Result add(@RequestBody PurchaseOrderVo vo) {
if (vo.getSid() == null
|| StringUtils.isEmpty(vo.getSname())
|| vo.getTotal() == null) {
@ -67,7 +68,7 @@ public class BizPurchaseOrderController {
}
@PostMapping("update")
public Result update(@RequestBody BizPurchaseOrder vo) {
public Result update(@RequestBody PurchaseOrderVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
@ -76,7 +77,7 @@ public class BizPurchaseOrderController {
}
@PostMapping("commit")
public Result commit(@RequestBody BizPurchaseOrder vo) {
public Result commit(@RequestBody PurchaseOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
@ -96,17 +97,17 @@ public class BizPurchaseOrderController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) {
public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) {
public Result pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) {
public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}

@ -1,14 +1,15 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.service.BizSellOrderService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.doc.BizSellOrderService;
import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List;
@RestController
@RequestMapping("document/sell/order")
public class BizSellOrderController {
@RequestMapping("doc/sell/order")
public class SellOrderController {
@Resource
private BizSellOrderService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizSellOrder order = service.getById(id);
return order == null ? Result.fail("获取单据信息失败") : Result.success(order);
SellOrderVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
}
@GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizSellOrderController {
}
@PostMapping("add")
public Result add(@RequestBody BizSellOrder vo) {
public Result add(@RequestBody SellOrderVo vo) {
if (vo.getCustomerId() == null
|| StringUtils.isEmpty(vo.getCustomerName())
|| vo.getTotal() == null) {
@ -68,7 +69,7 @@ public class BizSellOrderController {
}
@PostMapping("update")
public Result update(@RequestBody BizSellOrder vo) {
public Result update(@RequestBody SellOrderVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
@ -77,7 +78,7 @@ public class BizSellOrderController {
}
@PostMapping("commit")
public Result commit(@RequestBody BizSellOrder vo) {
public Result commit(@RequestBody SellOrderVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
@ -98,17 +99,17 @@ public class BizSellOrderController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) {
public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) {
public Result pass(@RequestBody DocStatusUpdate vo) {
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) {
public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}

@ -1,14 +1,15 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.doc;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.service.BizSellOutboundService;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.doc.BizSellOutboundService;
import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -19,16 +20,16 @@ import java.math.BigDecimal;
import java.util.List;
@RestController
@RequestMapping("document/sell/outbound")
public class BizSellOutboundController {
@RequestMapping("doc/sell/outbound")
public class SellOutboundController {
@Resource
private BizSellOutboundService service;
@GetMapping("getById")
public Result getById(@RequestParam String id) {
if (StringUtils.isEmpty(id)) return Result.fail("参数错误");
BizSellOutbound outbound = service.getById(id);
return outbound == null ? Result.fail("获取单据信息失败") : Result.success(outbound);
SellOutboundVo vo = service.getById(id);
return vo == null ? Result.fail("获取单据信息失败") : Result.success(vo);
}
@GetMapping("getSubById")
@ -48,7 +49,7 @@ public class BizSellOutboundController {
}
@PostMapping("add")
public Result add(@RequestBody BizSellOutbound vo) {
public Result add(@RequestBody SellOutboundVo vo) {
String errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
@ -63,7 +64,7 @@ public class BizSellOutboundController {
}
@PostMapping("update")
public Result update(@RequestBody BizSellOutbound vo) {
public Result update(@RequestBody SellOutboundVo vo) {
String errMsg = validateUpdate(vo);
if (errMsg == null) errMsg = validateSub(vo.getData());
if (errMsg != null) return Result.fail(errMsg);
@ -72,7 +73,7 @@ public class BizSellOutboundController {
}
@PostMapping("commit")
public Result commit(@RequestBody BizSellOutbound vo) {
public Result commit(@RequestBody SellOutboundVo vo) {
boolean isFirst = StringUtils.isEmpty(vo.getId());
String errMsg = validateSub(vo.getData());
@ -91,18 +92,18 @@ public class BizSellOutboundController {
}
@PostMapping("withdraw")
public Result withdraw(@RequestBody DocumentStatusUpdate vo) {
public Result withdraw(@RequestBody DocStatusUpdate vo) {
return service.withdraw(vo, SessionUtil.get());
}
@PostMapping("pass")
public Result pass(@RequestBody DocumentStatusUpdate vo) {
public Result pass(@RequestBody DocStatusUpdate vo) {
if (StringUtils.isEmpty(vo.getPid())) return Result.fail("参数错误");
return service.pass(vo, SessionUtil.get());
}
@PostMapping("reject")
public Result reject(@RequestBody DocumentStatusUpdate vo) {
public Result reject(@RequestBody DocStatusUpdate vo) {
return service.reject(vo, SessionUtil.get());
}

@ -1,30 +1,29 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.msg;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import cn.toesbieya.jxc.service.msg.MsgService;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.service.MsgService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("message")
public class MsgController {
@RequestMapping("message/manage")
public class ManageController {
@Resource
private MsgService msgService;
private MsgService service;
@PostMapping("manage/search")
@PostMapping("search")
public Result search(@RequestBody MsgSearch vo) {
return Result.success(msgService.search(vo));
return Result.success(service.search(vo));
}
@PostMapping("manage/add")
@PostMapping("add")
public Result add(@RequestBody Msg msg) {
String errMsg = validateAdd(msg);
if (errMsg != null) return Result.fail(errMsg);
@ -33,19 +32,19 @@ public class MsgController {
setAddInfo(user, msg);
return msgService.add(msg);
return service.add(msg);
}
@PostMapping("manage/update")
@PostMapping("update")
public Result update(@RequestBody Msg msg) {
String errMsg = validateAdd(msg);
if (errMsg == null) errMsg = validateUpdate(msg);
if (errMsg != null) return Result.fail(errMsg);
return msgService.update(msg);
return service.update(msg);
}
@PostMapping("manage/publish")
@PostMapping("publish")
public Result publish(@RequestBody Msg msg) {
boolean isFirstCreate = msg.getId() == null;
@ -62,10 +61,10 @@ public class MsgController {
msg.setPtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_PUBLISHED);
return msgService.publish(msg);
return service.publish(msg);
}
@PostMapping("manage/withdraw")
@PostMapping("withdraw")
public Result withdraw(@RequestBody Msg msg) {
if (msg.getId() == null) return Result.fail("参数错误");
@ -76,32 +75,12 @@ public class MsgController {
msg.setWtime(System.currentTimeMillis());
msg.setStatus(MsgConstant.STATUS_WITHDREW);
return msgService.withdraw(msg);
}
@GetMapping("manage/del")
public Result del(@RequestParam Integer id) {
return msgService.del(id);
}
@PostMapping("user/search")
public Result searchPersonal(@RequestBody MsgPersonalSearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
return Result.success(msgService.searchPersonal(vo));
}
@GetMapping("user/read")
public Result read(@RequestParam Integer id) {
return msgService.read(SessionUtil.get(), id);
return service.withdraw(msg);
}
@GetMapping("user/readAll")
public Result readAll() {
return msgService.readAll(SessionUtil.get());
@GetMapping("del")
public Result del(@RequestParam Integer id, @RequestParam String title) {
return service.del(id, title);
}
private void setAddInfo(UserVo user, Msg msg) {

@ -0,0 +1,35 @@
package cn.toesbieya.jxc.controller.msg;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.service.msg.MsgUserService;
import cn.toesbieya.jxc.utils.SessionUtil;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController("msgUserController")
@RequestMapping("message/user")
public class UserController {
@Resource
private MsgUserService service;
@PostMapping("search")
public Result searchPersonal(@RequestBody MsgPersonalSearch vo) {
UserVo user = SessionUtil.get();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
return Result.success(service.search(vo));
}
@GetMapping("read")
public Result read(@RequestParam Integer id) {
return service.read(SessionUtil.get(), id);
}
@GetMapping("readAll")
public Result readAll() {
return service.readAll(SessionUtil.get());
}
}

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.service.SysCategoryService;
import cn.toesbieya.jxc.service.sys.SysCategoryService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -11,18 +11,18 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("system/category")
public class SysCategoryController {
public class CategoryController {
@Resource
private SysCategoryService categoryService;
private SysCategoryService service;
@GetMapping("getAll")
public Result getAll() {
return Result.success(categoryService.getAll());
return Result.success(service.getAll());
}
@PostMapping("search")
public Result search(@RequestBody CategorySearch vo) {
return Result.success(categoryService.search(vo));
return Result.success(service.search(vo));
}
@PostMapping("add")
@ -31,7 +31,7 @@ public class SysCategoryController {
if (errMsg != null) return Result.fail(errMsg);
category.setCtime(System.currentTimeMillis());
return categoryService.add(category);
return service.add(category);
}
@PostMapping("update")
@ -39,13 +39,13 @@ public class SysCategoryController {
String errMsg = validateCategoryUpdateParam(category);
if (errMsg != null) return Result.fail(errMsg);
return categoryService.update(category);
return service.update(category);
}
@PostMapping("del")
public Result del(@RequestBody SysCategory category) {
if (category.getId() == null) return Result.fail("删除失败,参数错误");
return categoryService.del(category);
return service.del(category);
}
private String validateCategoryCreateParam(SysCategory category) {

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import cn.toesbieya.jxc.service.SysCustomerService;
import cn.toesbieya.jxc.service.sys.SysCustomerService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -11,23 +11,18 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("system/customer")
public class SysCustomerController {
public class CustomerController {
@Resource
private SysCustomerService customerService;
private SysCustomerService service;
@GetMapping("getLimitRegion")
public Result getLimitRegion() {
return Result.success(customerService.getLimitRegion());
}
@GetMapping("get")
public Result get() {
return Result.success(customerService.get());
return Result.success(service.getLimitRegion());
}
@PostMapping("search")
public Result search(@RequestBody CustomerSearch vo) {
return Result.success(customerService.search(vo));
return Result.success(service.search(vo));
}
@PostMapping("add")
@ -36,7 +31,7 @@ public class SysCustomerController {
if (errMsg != null) return Result.fail("创建失败," + errMsg);
customer.setCtime(System.currentTimeMillis());
return customerService.add(customer);
return service.add(customer);
}
@PostMapping("update")
@ -44,13 +39,13 @@ public class SysCustomerController {
String errMsg = validateUpdateParam(customer);
if (errMsg != null) return Result.fail("修改失败," + errMsg);
return customerService.update(customer);
return service.update(customer);
}
@PostMapping("del")
public Result del(@RequestBody SysCustomer customer) {
if (customer.getId() == null) return Result.fail("删除失败,参数错误");
return customerService.del(customer);
return service.del(customer);
}
private String validateCreateParam(SysCustomer customer) {

@ -1,9 +1,9 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import cn.toesbieya.jxc.service.SysDepartmentService;
import cn.toesbieya.jxc.service.sys.SysDepartmentService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -14,13 +14,13 @@ import java.util.stream.Collectors;
@RestController
@RequestMapping("system/department")
public class SysDepartmentController {
public class DepartmentController {
@Resource
private SysDepartmentService departmentService;
private SysDepartmentService service;
@GetMapping("get")
public Result get(boolean all) {
List<DepartmentVo> list = departmentService.getAll();
List<DepartmentVo> list = service.getAll();
if (!all) {
list = list
.stream()
@ -37,7 +37,7 @@ public class SysDepartmentController {
|| null == department.getStatus()) {
return Result.fail("添加失败,参数错误");
}
return departmentService.add(department);
return service.add(department);
}
@PostMapping("update")
@ -48,7 +48,7 @@ public class SysDepartmentController {
|| null == department.getStatus()) {
return Result.fail("修改失败,参数错误");
}
return departmentService.update(department);
return service.update(department);
}
@PostMapping("del")
@ -56,6 +56,6 @@ public class SysDepartmentController {
if (null == department.getId() || StringUtils.isEmpty(department.getName())) {
return Result.fail("删除失败,参数错误");
}
return departmentService.del(department);
return service.del(department);
}
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.service.SysResourceService;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.web.bind.annotation.*;
@ -9,18 +9,13 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("system/resource")
public class SysResourceController {
public class ResourceController {
@Resource
private SysResourceService resourceService;
@GetMapping("get")
public Result get() {
return Result.success(resourceService.get());
}
private SysResourceService service;
@GetMapping("getAll")
public Result getAll() {
return Result.success(resourceService.getAll());
return Result.success(service.getAll());
}
@PostMapping("update")
@ -30,6 +25,6 @@ public class SysResourceController {
|| resource.getIpRate() == null) {
return Result.fail("参数错误");
}
return resourceService.update(resource);
return service.update(resource);
}
}

@ -1,10 +1,10 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import cn.toesbieya.jxc.utils.SessionUtil;
import cn.toesbieya.jxc.service.SysRoleService;
import cn.toesbieya.jxc.service.sys.SysRoleService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -13,18 +13,18 @@ import javax.annotation.Resource;
@RequestMapping("system/role")
@RestController
public class SysRoleController {
public class RoleController {
@Resource
private SysRoleService roleService;
private SysRoleService service;
@GetMapping("get")
public Result get() {
return Result.success(roleService.get());
return Result.success(service.get());
}
@PostMapping("search")
public Result search(@RequestBody RoleSearch vo) {
return Result.success(roleService.search(vo));
return Result.success(service.search(vo));
}
@PostMapping("add")
@ -40,7 +40,7 @@ public class SysRoleController {
role.setCname(user.getName());
role.setCtime(System.currentTimeMillis());
return roleService.add(role);
return service.add(role);
}
@PostMapping("update")
@ -50,12 +50,12 @@ public class SysRoleController {
|| role.getStatus() == null) {
return Result.fail("修改失败,参数错误");
}
return roleService.update(role);
return service.update(role);
}
@PostMapping("del")
public Result del(@RequestBody SysRole role) {
if (role.getId() == null) return Result.fail("删除失败,参数错误");
return roleService.del(role);
return service.del(role);
}
}

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import cn.toesbieya.jxc.service.SysSupplierService;
import cn.toesbieya.jxc.service.sys.SysSupplierService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
@ -11,23 +11,18 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("system/supplier")
public class SysSupplierController {
public class SupplierController {
@Resource
private SysSupplierService supplierService;
private SysSupplierService service;
@GetMapping("getLimitRegion")
public Result getLimitRegion() {
return Result.success(supplierService.getLimitRegion());
}
@GetMapping("get")
public Result get() {
return Result.success(supplierService.get());
return Result.success(service.getLimitRegion());
}
@PostMapping("search")
public Result search(@RequestBody SupplierSearch vo) {
return Result.success(supplierService.search(vo));
return Result.success(service.search(vo));
}
@PostMapping("add")
@ -35,22 +30,21 @@ public class SysSupplierController {
String errMsg = validateCreateParam(supplier);
if (errMsg != null) return Result.fail("添加失败," + errMsg);
supplier.setId(null);
supplier.setCtime(System.currentTimeMillis());
return supplierService.add(supplier);
return service.add(supplier);
}
@PostMapping("update")
public Result update(@RequestBody SysSupplier supplier) {
String errMsg = validateUpdateParam(supplier);
if (errMsg != null) return Result.fail("修改失败," + errMsg);
return supplierService.update(supplier);
return errMsg == null ? service.update(supplier) : Result.fail("修改失败," + errMsg);
}
@PostMapping("del")
public Result del(@RequestBody SysSupplier supplier) {
if (supplier.getId() == null) return Result.fail("删除失败,参数错误");
return supplierService.del(supplier);
return service.del(supplier);
}
private String validateCreateParam(SysSupplier supplier) {

@ -1,10 +1,10 @@
package cn.toesbieya.jxc.controller;
package cn.toesbieya.jxc.controller.sys;
import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.utils.ThreadUtil;
import cn.toesbieya.jxc.service.SysUserService;
import cn.toesbieya.jxc.service.sys.SysUserService;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
@ -16,15 +16,15 @@ import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RestController("sysUserController")
@RequestMapping("system/user")
public class SysUserController {
public class UserController {
@Resource
private SysUserService userService;
private SysUserService service;
@PostMapping("search")
public Result search(@RequestBody UserSearch vo) {
return Result.success(userService.search(vo));
return Result.success(service.search(vo));
}
@PostMapping("add")
@ -33,7 +33,7 @@ public class SysUserController {
if (errMsg != null) {
return Result.fail(errMsg);
}
return userService.add(user);
return service.add(user);
}
@PostMapping("update")
@ -42,7 +42,7 @@ public class SysUserController {
if (errMsg != null) {
return Result.fail(errMsg);
}
return userService.update(user);
return service.update(user);
}
@PostMapping("del")
@ -50,7 +50,7 @@ public class SysUserController {
if (user.getId() == null) {
return Result.fail("删除失败");
}
return userService.del(user);
return service.del(user);
}
@PostMapping("kick")
@ -62,7 +62,7 @@ public class SysUserController {
List<String> names = users.stream().map(SysUser::getName).collect(Collectors.toList());
action.setAction("踢出用户:【" + String.join(",", names) + "】");
return userService.kick(users);
return service.kick(users);
}
@PostMapping("resetPwd")
@ -70,7 +70,7 @@ public class SysUserController {
if (user.getId() == null || StringUtils.isEmpty(user.getName())) {
return Result.fail("参数错误");
}
return userService.resetPwd(user);
return service.resetPwd(user);
}
private String validateUserCreateParam(SysUser user) {

@ -20,7 +20,7 @@ import javax.annotation.Resource;
@RestControllerAdvice
public class GlobalExceptionHandler {
@Resource
private RecService recService;
private RecService service;
//抛出异常时希望返回给前台
@ExceptionHandler(JsonResultException.class)
@ -54,8 +54,10 @@ public class GlobalExceptionHandler {
private void recordUserAction(Exception e) {
RecUserAction action = ThreadUtil.getAction();
if (action != null && !StringUtils.isEmpty(action.getAction())) {
action.setTime(System.currentTimeMillis());
action.setError(Util.exception2Str(e));
recService.insertUserAction(action, UserActionEnum.FAIL);
action.setType(UserActionEnum.FAIL.getCode());
service.insertUserAction(action);
}
ThreadUtil.clearAll();
}

@ -0,0 +1,8 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizDocHistory;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface BizDocHistoryMapper extends BaseMapper<BizDocHistory> {
}

@ -1,15 +0,0 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizDocumentHistory;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BizDocumentHistoryMapper {
List<BizDocumentHistory> getByPid(@Param("pid") String pid);
List<BizDocumentHistory> search(DocumentHistorySearch vo);
int insert(BizDocumentHistory history);
}

@ -1,33 +1,14 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BizPurchaseInboundMapper {
BizPurchaseInbound getById(@Param("id") String id);
List<BizPurchaseInboundSub> getSubById(@Param("id") String id);
List<BizPurchaseInbound> search(PurchaseInboundSearch vo);
List<PurchaseInboundExport> export(PurchaseInboundSearch vo);
int insert(BizPurchaseInbound param);
void addSub(List<BizPurchaseInboundSub> list);
int update(BizPurchaseInbound param);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
public interface BizPurchaseInboundMapper extends BaseMapper<BizPurchaseInbound> {
List<PurchaseInboundExport> export(@Param(Constants.WRAPPER) Wrapper<BizPurchaseInbound> wrapper);
}

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizPurchaseInboundSubMapper extends BaseMapper<BizPurchaseInboundSub> {
void insertBatch(List<BizPurchaseInboundSub> list);
}

@ -1,38 +1,14 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
public interface BizPurchaseOrderMapper {
BizPurchaseOrder getById(@Param("id") String id);
List<BizPurchaseOrderSub> getSubById(@Param("id") String id);
List<BizPurchaseOrder> search(PurchaseOrderSearch vo);
List<PurchaseOrderExport> export(PurchaseOrderSearch vo);
int insert(BizPurchaseOrder param);
void addSub(List<BizPurchaseOrderSub> list);
int update(BizPurchaseOrder param);
int updateSubRemainNum(@Param("id") Integer id, @Param("remain_num") BigDecimal remain_num);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
int updateFinish(@Param("id") String id, @Param("finish") Integer finish, @Param("ftime") Long ftime);
public interface BizPurchaseOrderMapper extends BaseMapper<BizPurchaseOrder> {
List<PurchaseOrderExport> export(@Param(Constants.WRAPPER) Wrapper<BizPurchaseOrder> wrapper);
}

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizPurchaseOrderSubMapper extends BaseMapper<BizPurchaseOrderSub> {
void insertBatch(List<BizPurchaseOrderSub> list);
}

@ -1,38 +1,14 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.model.vo.export.SellOrderExport;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
public interface BizSellOrderMapper {
BizSellOrder getById(@Param("id") String id);
List<BizSellOrderSub> getSubById(@Param("id") String id);
List<BizSellOrder> search(SellOrderSearch vo);
List<SellOrderExport> export(SellOrderSearch vo);
int insert(BizSellOrder param);
void addSub(List<BizSellOrderSub> list);
int update(BizSellOrder param);
int updateSubRemainNum(@Param("id") Integer id, @Param("remain_num") BigDecimal remainNum);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
int updateFinish(@Param("id") String id, @Param("finish") Integer finish, @Param("ftime") Long ftime);
public interface BizSellOrderMapper extends BaseMapper<BizSellOrder> {
List<SellOrderExport> export(@Param(Constants.WRAPPER) Wrapper<BizSellOrder> wrapper);
}

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizSellOrderSubMapper extends BaseMapper<BizSellOrderSub> {
void insertBatch(List<BizSellOrderSub> list);
}

@ -1,33 +1,14 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.vo.export.SellOutboundExport;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface BizSellOutboundMapper {
BizSellOutbound getById(@Param("id") String id);
List<BizSellOutboundSub> getSubById(@Param("id") String id);
List<BizSellOutbound> search(SellOutboundSearch vo);
List<SellOutboundExport> export(SellOutboundSearch vo);
int insert(BizSellOutbound param);
void addSub(List<BizSellOutboundSub> list);
int update(BizSellOutbound param);
int pass(@Param("id") String id, @Param("vid") Integer vid, @Param("vname") String vname, @Param("vtime") long vtime);
int reject(@Param("id") String id);
int del(@Param("id") String id);
void delSubByPid(@Param("pid") String pid);
public interface BizSellOutboundMapper extends BaseMapper<BizSellOutbound> {
List<SellOutboundExport> export(@Param(Constants.WRAPPER) Wrapper<BizSellOutbound> wrapper);
}

@ -0,0 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface BizSellOutboundSubMapper extends BaseMapper<BizSellOutboundSub> {
void insertBatch(List<BizSellOutboundSub> list);
}

@ -3,22 +3,20 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.BizStock;
import cn.toesbieya.jxc.model.vo.export.StockExport;
import cn.toesbieya.jxc.model.vo.result.StockSearchResult;
import cn.toesbieya.jxc.model.vo.search.StockSearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
public interface BizStockMapper {
List<StockSearchResult> search(StockSearch vo);
public interface BizStockMapper extends BaseMapper<BizStock> {
List<StockSearchResult> search(@Param(Constants.WRAPPER) Wrapper<BizStock> wrapper);
List<BizStock> getDetail(@Param("cids") String cids);
List<StockExport> export(@Param(Constants.WRAPPER) Wrapper<BizStock> wrapper);
List<BizStock> getDetailById(@Param("ids") String ids);
List<StockExport> export(StockSearch vo);
int batchInsert(@Param("list") List<BizStock> list);
int insertBatch(@Param("list") List<BizStock> list);
int outbound(@Param("id") Integer id, @Param("num") BigDecimal num);
}

@ -1,28 +1,12 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface MsgMapper {
List<Msg> search(MsgSearch search);
int insert(Msg msg);
int update(Msg msg);
int withdraw(Msg msg);
int del(@Param("id") int id);
int insertState(MsgState state);
boolean checkRead(@Param("mid") int mid, @Param("uid") int uid);
public interface MsgMapper extends BaseMapper<Msg> {
List<Msg> getReadByUser(MsgPersonalSearch search);
List<Msg> getUnreadByUser(MsgPersonalSearch search);

@ -0,0 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.MsgState;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface MsgStateMapper extends BaseMapper<MsgState> {
}

@ -1,20 +1,10 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface RecAttachmentMapper {
List<RecAttachment> getByPid(@Param("pid") String pid);
List<String> getUrlByPid(@Param("pid") String pid);
int add(List<RecAttachment> list);
int del(RecAttachment attachment);
int delByPid(@Param("pid") String pid);
int delByUrls(List<String> list);
public interface RecAttachmentMapper extends BaseMapper<RecAttachment> {
int insertBatch(List<RecAttachment> list);
}

@ -1,12 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.vo.search.LoginHistorySearch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface RecLoginHistoryMapper {
int insert(RecLoginHistory history);
List<RecLoginHistory> search(LoginHistorySearch vo);
public interface RecLoginHistoryMapper extends BaseMapper<RecLoginHistory> {
}

@ -1,12 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.vo.search.UserActionSearch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface RecUserActionMapper {
void insert(RecUserAction action);
List<RecUserAction> search(UserActionSearch vo);
public interface RecUserActionMapper extends BaseMapper<RecUserAction> {
}

@ -1,27 +1,9 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysCategoryMapper {
List<SysCategory> getAll();
List<SysCategory> search(CategorySearch vo);
SysCategory getById(@Param("id") int id);
int add(SysCategory sysCategory);
int update(SysCategory sysCategory);
int del(@Param("id") int id);
boolean hasChildren(@Param("id") int id);
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
public interface SysCategoryMapper extends BaseMapper<SysCategory> {
boolean checkIsUse(@Param("cid") Integer cid);
}

@ -2,25 +2,10 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface SysCustomerMapper {
List<SysCustomer> get();
SysCustomer getById(int id);
List<SysCustomer> search(CustomerSearch vo);
int add(SysCustomer category);
int update(SysCustomer category);
int del(int id);
public interface SysCustomerMapper extends BaseMapper<SysCustomer> {
List<RegionValueResult> getLimitRegion();
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
}

@ -2,20 +2,13 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysDepartment;
import cn.toesbieya.jxc.model.vo.DepartmentVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface SysDepartmentMapper {
public interface SysDepartmentMapper extends BaseMapper<SysDepartment> {
List<DepartmentVo> selectChildrenById(@Param("id") int id);
List<DepartmentVo> selectParentsById(@Param("id") int id);
int insert(SysDepartment department);
int update(SysDepartment department);
int del(@Param("id") int id);
boolean nameExist(@Param("id") Integer id, @Param("pid") int pid, @Param("name") String name);
}

@ -0,0 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysRegion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface SysRegionMapper extends BaseMapper<SysRegion> {
}

@ -1,15 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysResource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface SysResourceMapper {
List<SysResource> get();
List<SysResource> getAll();
List<SysResource> getByRole(int role);
int update(SysResource resource);
public interface SysResourceMapper extends BaseMapper<SysResource> {
}

@ -1,25 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface SysRoleMapper {
SysRole selectById(@Param("id") int id);
List<SysRole> get();
List<SysRole> getAll();
List<SysRole> search(RoleSearch vo);
int insert(SysRole role);
int update(SysRole role);
int del(int id);
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
public interface SysRoleMapper extends BaseMapper<SysRole> {
}

@ -2,25 +2,10 @@ package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface SysSupplierMapper {
List<SysSupplier> get();
SysSupplier getById(int id);
List<SysSupplier> search(SupplierSearch vo);
int add(SysSupplier category);
int update(SysSupplier category);
int del(int id);
public interface SysSupplierMapper extends BaseMapper<SysSupplier> {
List<RegionValueResult> getLimitRegion();
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
}

@ -1,29 +1,7 @@
package cn.toesbieya.jxc.mapper;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.PasswordUpdateParam;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
public interface SysUserMapper {
SysUser getByNameAndPwd(@Param("name") String name, @Param("pwd") String pwd);
List<UserVo> search(UserSearch vo);
boolean isNameExist(@Param("name") String name, @Param("id") Integer id);
int insert(SysUser user);
int update(SysUser user);
int deleteById(@Param("id") Integer id);
int resetPwd(@Param("id") Integer id, @Param("pwd") String pwd);
int updatePwd(PasswordUpdateParam vo);
int updateAvatar(@Param("id") Integer id, @Param("avatar") String avatar);
public interface SysUserMapper extends BaseMapper<SysUser> {
}

@ -2,10 +2,8 @@ package cn.toesbieya.jxc.model.entity;
import lombok.Data;
import java.util.List;
@Data
public class BizDocument<T> {
public class BizDoc {
private String id;
private Integer cid;
private String cname;
@ -15,8 +13,4 @@ public class BizDocument<T> {
private Long vtime;
private Integer status;
private String remark;
private List<T> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
}

@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BizDocumentHistory {
public class BizDocHistory {
private Integer id;
private String pid;
private Integer type;

@ -5,7 +5,7 @@ import lombok.Data;
import java.math.BigDecimal;
@Data
public class BizDocumentSub {
public class BizDocSub {
private Integer id;
private String pid;
private Integer cid;

@ -7,6 +7,6 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizPurchaseInbound extends BizDocument<BizPurchaseInboundSub> {
public class BizPurchaseInbound extends BizDoc {
private String pid;
}

@ -7,6 +7,6 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizPurchaseInboundSub extends BizDocumentSub {
public class BizPurchaseInboundSub extends BizDocSub {
}

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizPurchaseOrder extends BizDocument<BizPurchaseOrderSub> {
public class BizPurchaseOrder extends BizDoc {
private Integer sid;
private String sname;
private Integer finish;

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizPurchaseOrderSub extends BizDocumentSub {
public class BizPurchaseOrderSub extends BizDocSub {
private BigDecimal price;
private BigDecimal remainNum;
}

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizSellOrder extends BizDocument<BizSellOrderSub> {
public class BizSellOrder extends BizDoc {
private Integer customerId;
private String customerName;
private Integer finish;

@ -9,7 +9,7 @@ import java.math.BigDecimal;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizSellOrderSub extends BizDocumentSub {
public class BizSellOrderSub extends BizDocSub {
private BigDecimal price;
private BigDecimal remainNum;
}

@ -7,6 +7,6 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizSellOutbound extends BizDocument<BizSellOutboundSub> {
public class BizSellOutbound extends BizDoc {
private String pid;
}

@ -7,6 +7,6 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class BizSellOutboundSub extends BizDocumentSub {
public class BizSellOutboundSub extends BizDocSub {
private Integer sid;
}

@ -16,7 +16,6 @@ public class SysCustomer {
private String linkman;
private String linkphone;
private String region;
private String regionName;
private Integer status;
private Long ctime;
private String remark;

@ -11,7 +11,6 @@ public class SysResource {
private Integer id;
private Integer pid;
private String name;
private String fullname;
private String url;
private boolean admin = false;
private Long totalRate;

@ -10,7 +10,6 @@ public class SysSupplier {
private String linkman;
private String linkphone;
private String region;
private String regionName;
private Integer status;
private Long ctime;
private String remark;

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class CustomerVo extends SysCustomer {
private String regionName;
public CustomerVo(SysCustomer parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizPurchaseInbound;
import cn.toesbieya.jxc.model.entity.BizPurchaseInboundSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class PurchaseInboundVo extends BizPurchaseInbound {
private List<BizPurchaseInboundSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public PurchaseInboundVo(BizPurchaseInbound parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class PurchaseOrderVo extends BizPurchaseOrder {
private List<BizPurchaseOrderSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public PurchaseOrderVo(BizPurchaseOrder parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysResource;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class ResourceVo extends SysResource {
private String fullname;
public ResourceVo(SysResource parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizSellOrder;
import cn.toesbieya.jxc.model.entity.BizSellOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class SellOrderVo extends BizSellOrder {
private List<BizSellOrderSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public SellOrderVo(BizSellOrder parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,27 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.BizSellOutbound;
import cn.toesbieya.jxc.model.entity.BizSellOutboundSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
import java.util.List;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class SellOutboundVo extends BizSellOutbound {
private List<BizSellOutboundSub> data;
private List<RecAttachment> imageList;
private List<RecAttachment> uploadImageList;
private List<String> deleteImageList;
public SellOutboundVo(BizSellOutbound parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -0,0 +1,20 @@
package cn.toesbieya.jxc.model.vo;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.beans.BeanUtils;
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SupplierVo extends SysSupplier {
private String regionName;
public SupplierVo(SysSupplier parent) {
BeanUtils.copyProperties(parent, this);
}
}

@ -14,10 +14,15 @@ public class PageResult<T> {
public PageResult(List<T> list) {
this.list = list;
if (list instanceof Page) {
this.total = ((Page) list).getTotal();
this.total = ((Page<T>) list).getTotal();
}
else {
this.total = list.size();
}
}
public PageResult(long total, List<T> list) {
this.total = total;
this.list = list;
}
}

@ -0,0 +1,15 @@
package cn.toesbieya.jxc.model.vo.search;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class DocHistorySearch extends BaseSearch{
private String pid;
private String type;
private String uid;
private String uname;
}

@ -7,7 +7,7 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class DocumentSearch extends BaseSearch {
public class DocSearch extends BaseSearch {
private String id;
private String idFuzzy;
private Integer cid;

@ -1,11 +0,0 @@
package cn.toesbieya.jxc.model.vo.search;
import lombok.Data;
@Data
public class DocumentHistorySearch {
private String pid;
private String type;
private String uid;
private String uname;
}

@ -7,7 +7,7 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class PurchaseInboundSearch extends DocumentSearch {
public class PurchaseInboundSearch extends DocSearch {
private String pid;
private String pidFuzzy;
}

@ -7,7 +7,7 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class PurchaseOrderSearch extends DocumentSearch {
public class PurchaseOrderSearch extends DocSearch {
private Integer sid;
private String sname;
private String finish;

@ -7,7 +7,7 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SellOrderSearch extends DocumentSearch {
public class SellOrderSearch extends DocSearch {
private Integer customerId;
private String customerName;
private String finish;

@ -7,7 +7,7 @@ import lombok.ToString;
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class SellOutboundSearch extends DocumentSearch {
public class SellOutboundSearch extends DocSearch {
private String pid;
private String pidFuzzy;
}

@ -3,7 +3,7 @@ package cn.toesbieya.jxc.model.vo.update;
import lombok.Data;
@Data
public class DocumentStatusUpdate {
public class DocStatusUpdate {
private String id;
private String pid;
private String info;

@ -1,8 +1,8 @@
package cn.toesbieya.jxc.module;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.vo.ResourceVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.service.SysResourceService;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@ -20,7 +20,7 @@ public class PermissionModule {
private final static ConcurrentHashMap<String, Integer> urlMap = new ConcurrentHashMap<>(128);
private final static ConcurrentHashMap<String, Integer> adminUrlMap = new ConcurrentHashMap<>(128);
@Resource
private SysResourceService resourceService;
private SysResourceService service;
public static boolean authority(UserVo user, String url) {
if (user.isAdmin() || !needAuthority(url)) {
@ -44,10 +44,10 @@ public class PermissionModule {
public void init() {
Instant start = Instant.now();
List<SysResource> resources = resourceService.getAll();
List<ResourceVo> resources = service.getAll();
if (resources != null) {
for (SysResource p : resources) {
for (ResourceVo p : resources) {
if (p.isAdmin()) {
adminUrlMap.put(p.getUrl(), p.getId());
}

@ -1,7 +1,7 @@
package cn.toesbieya.jxc.module.request;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.service.SysResourceService;
import cn.toesbieya.jxc.model.vo.ResourceVo;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import cn.toesbieya.jxc.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -26,7 +26,7 @@ public class RequestModule {
private final static long EXPIRE_SECONDS = 10L;
//url的总访问频率限制
private static ConcurrentHashMap<String, RateLimiterHelper> limitMap;
private SysResourceService resourceService;
private SysResourceService service;
/**
* 未在resource表中配置的不进行限制
@ -67,8 +67,8 @@ public class RequestModule {
private void initLimitMap() {
limitMap = new ConcurrentHashMap<>();
List<SysResource> resources = resourceService.getAll();
for (SysResource resource : resources) {
List<ResourceVo> resources = service.getAll();
for (ResourceVo resource : resources) {
RateLimiterHelper helper = new RateLimiterHelper(resource.getTotalRate(), resource.getIpRate());
limitMap.put(resource.getUrl(), helper);
}
@ -80,7 +80,7 @@ public class RequestModule {
}
@Autowired
public void setResourceService(SysResourceService resourceService) {
this.resourceService = resourceService;
public void setService(SysResourceService service) {
this.service = service;
}
}

@ -1,6 +1,6 @@
package cn.toesbieya.jxc.schedule;
import cn.toesbieya.jxc.constant.DocumentConstant;
import cn.toesbieya.jxc.constant.DocConstant;
import cn.toesbieya.jxc.utils.DateUtil;
import cn.toesbieya.jxc.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
@ -19,7 +19,7 @@ import java.util.Map;
@Component
@Slf4j
@DependsOn("redisUtil")
public class DocumentTask {
public class DocTask {
@PostConstruct
public void run() {
template("初始化单据ID", 0);
@ -28,25 +28,25 @@ public class DocumentTask {
//每天零点重置单据ID的值
@Async("scheduledExecutor")
@Scheduled(cron = "1 0 0 */1 * ?")
public void autoRefreshDocumentID() {
public void autoRefreshDocId() {
template("定时更新单据ID", 1);
}
//启动时初始化单据ID
private void initDocumentsID() {
String[] fields = new String[DocumentConstant.DOCUMENT_TYPE.length + 1];
private void initDocId() {
String[] fields = new String[DocConstant.DOC_TYPE.length + 1];
fields[0] = "date";
System.arraycopy(DocumentConstant.DOCUMENT_TYPE, 0, fields, 1, fields.length - 1);
System.arraycopy(DocConstant.DOC_TYPE, 0, fields, 1, fields.length - 1);
List<Object> result = RedisUtil.hmget(DocumentConstant.DOCUMENT_TYPE_REDIS_KEY, fields);
List<Object> result = RedisUtil.hmget(DocConstant.DOC_TYPE_REDIS_KEY, fields);
long now = DateUtil.getTimestampNow();
//日期不是今天时,更新全部
Object firstItem = result.get(0);
if (null == firstItem || now != (long) firstItem) {
updateAllDocument(now);
log.info("更新【{}】种单据ID成功", DocumentConstant.DOCUMENT_TYPE.length);
updateAllDoc(now);
log.info("更新【{}】种单据ID成功", DocConstant.DOC_TYPE.length);
return;
}
@ -58,31 +58,31 @@ public class DocumentTask {
for (int i = 1; i < resultSize; i++) {
if (result.get(i) == null) {
updateNum++;
update.put(DocumentConstant.DOCUMENT_TYPE[i - 1], 1);
update.put(DocConstant.DOC_TYPE[i - 1], 1);
}
}
if (updateNum > 0) {
RedisUtil.hmset(DocumentConstant.DOCUMENT_TYPE_REDIS_KEY, update);
RedisUtil.hmset(DocConstant.DOC_TYPE_REDIS_KEY, update);
log.info("更新增加的单据【{}】种", updateNum);
}
}
//每种单据的值置为1
private void updateAllDocument(long now) {
private void updateAllDoc(long now) {
Map<String, Object> map = new HashMap<>();
map.put("date", now);
for (String v : DocumentConstant.DOCUMENT_TYPE) {
for (String v : DocConstant.DOC_TYPE) {
map.put(v, 1);
}
RedisUtil.hmset(DocumentConstant.DOCUMENT_TYPE_REDIS_KEY, map);
RedisUtil.hmset(DocConstant.DOC_TYPE_REDIS_KEY, map);
}
//模板
private void template(String action, int type) {
Instant start = Instant.now();
String lockKey = DocumentConstant.UPDATE_DOCUMENTS_LOCK_KEY;
String lockKey = DocConstant.UPDATE_DOC_LOCK_KEY;
try (RedisUtil.Locker locker = new RedisUtil.Locker(lockKey)) {
if (!locker.lock()) {
@ -91,10 +91,10 @@ public class DocumentTask {
}
if (type == 0) {
initDocumentsID();
initDocId();
}
else {
updateAllDocument(DateUtil.getTimestampNow());
updateAllDoc(DateUtil.getTimestampNow());
}
log.info("{}成功,耗时:{}毫秒", action, ChronoUnit.MILLIS.between(start, Instant.now()));

@ -21,11 +21,11 @@ import java.util.Map;
@Slf4j
public class StatisticTask {
@Resource
private StatisticMapper statisticMapper;
private StatisticMapper mapper;
@PostConstruct
public void run() {
this.autoStat();
autoStat();
}
//每天零点统计信息
@ -38,23 +38,23 @@ public class StatisticTask {
long today = DateUtil.getTimestampNow();
//检查是否已统计过昨日已完成的订单数
if (!statisticMapper.checkDailyFinishOrderExist(lastDay)) {
Integer lastDayPurchaseOrderFinish = statisticMapper.getPurchaseOrderLastDayFinishOrderNum();
Integer lastDaySellOrderFinish = statisticMapper.getSellOrderLastDayFinishOrderNum();
if (!mapper.checkDailyFinishOrderExist(lastDay)) {
Integer lastDayPurchaseOrderFinish = mapper.getPurchaseOrderLastDayFinishOrderNum();
Integer lastDaySellOrderFinish = mapper.getSellOrderLastDayFinishOrderNum();
StatFinishOrder param = new StatFinishOrder();
param.setPurchase(lastDayPurchaseOrderFinish);
param.setSell(lastDaySellOrderFinish);
param.setTime(lastDay);
statisticMapper.insertFinishOrder(param);
mapper.insertFinishOrder(param);
}
//检查是否已统计过昨日的采购额、销售额、毛利
if (!statisticMapper.checkDailyProfitExist(lastDay)) {
if (!mapper.checkDailyProfitExist(lastDay)) {
//昨日各个商品的采购额、销售额
List<StatProfitGoods> purchaseProfitGoods = statisticMapper.getPurchaseOrderDailyProfitGoods(lastDay, today);
List<StatProfitGoods> sellProfitGoods = statisticMapper.getSellOrderDailyProfitGoods(lastDay, today);
List<StatProfitGoods> purchaseProfitGoods = mapper.getPurchaseOrderDailyProfitGoods(lastDay, today);
List<StatProfitGoods> sellProfitGoods = mapper.getSellOrderDailyProfitGoods(lastDay, today);
//昨日的采购总额、销售总额
BigDecimal totalPurchase = new BigDecimal(0);
@ -104,10 +104,10 @@ public class StatisticTask {
statProfitTotal.setProfit(totalProfit);
statProfitTotal.setTime(lastDay);
statisticMapper.insertProfitTotal(statProfitTotal);
mapper.insertProfitTotal(statProfitTotal);
if (purchaseProfitGoods.size() > 0) {
statisticMapper.insertProfitGoodsBatch(purchaseProfitGoods);
mapper.insertProfitGoodsBatch(purchaseProfitGoods);
}
}

@ -4,15 +4,17 @@ import cn.toesbieya.jxc.annoation.TimeCost;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.GeneralStatusEnum;
import cn.toesbieya.jxc.enumeration.RecLoginHistoryEnum;
import cn.toesbieya.jxc.mapper.SysRoleMapper;
import cn.toesbieya.jxc.mapper.SysUserMapper;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.*;
import cn.toesbieya.jxc.service.sys.SysDepartmentService;
import cn.toesbieya.jxc.service.sys.SysResourceService;
import cn.toesbieya.jxc.service.sys.SysRoleService;
import cn.toesbieya.jxc.utils.QiniuUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.SessionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@ -30,11 +32,17 @@ public class AccountService {
@Resource
private SysDepartmentService departmentService;
@Resource
private SysRoleMapper roleMapper;
private SysRoleService roleService;
@TimeCost
public Result login(LoginParam param, String ip) {
SysUser user = userMapper.getByNameAndPwd(param.getUsername(), param.getPassword());
long now = System.currentTimeMillis();
SysUser user = userMapper.selectOne(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, param.getUsername())
.eq(SysUser::getPwd, param.getPassword())
);
if (user == null) {
return Result.fail("用户名或密码错误");
@ -63,7 +71,7 @@ public class AccountService {
if (roleId != null) {
//获取用户的角色
SysRole role = roleMapper.selectById(roleId);
SysRole role = roleService.getRoleById(roleId);
if (role != null) {
//设置角色名称
@ -72,12 +80,12 @@ public class AccountService {
info.setRoleName(roleName);
//获取用户的权限列表
List<SysResource> resources = resourceService.getByRole(roleId);
List<ResourceVo> resources = resourceService.getResourceByRole(role);
userResourcesUrlMap = new HashMap<>(128);
userResourcesIdSet = new HashSet<>(128);
for (SysResource resource : resources) {
for (ResourceVo resource : resources) {
Integer resourceId = resource.getId();
userResourcesUrlMap.put(resource.getUrl(), resourceId);
userResourcesIdSet.add(resourceId);
@ -110,14 +118,32 @@ public class AccountService {
SessionUtil.save(userVo);
//记录登陆信息
recService.insertLoginHistory(userVo, ip, RecLoginHistoryEnum.LOGIN);
recService.insertLoginHistory(
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.ip(ip)
.type(RecLoginHistoryEnum.LOGIN.getCode())
.time(now)
.build()
);
return Result.success(info);
}
public Result logout(UserVo user, String ip) {
if (user != null) {
recService.insertLoginHistory(user, ip, RecLoginHistoryEnum.LOGOUT);
recService.insertLoginHistory(
RecLoginHistory
.builder()
.uid(user.getId())
.uname(user.getName())
.ip(ip)
.type(RecLoginHistoryEnum.LOGOUT.getCode())
.time(System.currentTimeMillis())
.build()
);
SessionUtil.remove(user.getToken());
}
@ -127,7 +153,10 @@ public class AccountService {
public Result register(RegisterParam param) {
String name = param.getUsername();
if (userMapper.isNameExist(name, null)) {
if (userMapper
.selectCount(Wrappers.lambdaQuery(SysUser.class).eq(SysUser::getName, name))
.equals(0)
) {
return Result.fail("该用户名称已存在");
}
@ -145,13 +174,24 @@ public class AccountService {
@UserAction("'修改密码'")
public Result updatePwd(PasswordUpdateParam param) {
int rows = userMapper.updatePwd(param);
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getPwd, param.getNewPwd())
.eq(SysUser::getId, param.getId())
.eq(SysUser::getPwd, param.getOldPwd())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请检查原密码是否正确");
}
@UserAction("'修改头像'")
public Result updateAvatar(UserVo user, String avatar) {
int rows = userMapper.updateAvatar(user.getId(), avatar);
int rows = userMapper.update(
null,
Wrappers.lambdaUpdate(SysUser.class)
.set(SysUser::getAvatar, avatar)
.eq(SysUser::getId, user.getId())
);
//更新成功后删除云上旧的头像,同时更新redis中的用户信息
if (rows > 0) {
@ -159,10 +199,8 @@ public class AccountService {
if (!StringUtils.isEmpty(oldAvatar)) {
QiniuUtil.delete(oldAvatar);
}
user.setAvatar(avatar);
SessionUtil.save(user);
return Result.success("上传头像成功");
}
@ -173,6 +211,11 @@ public class AccountService {
}
public boolean checkName(String name, Integer id) {
return !userMapper.isNameExist(name, id);
Integer num = userMapper.selectCount(
Wrappers.lambdaQuery(SysUser.class)
.eq(SysUser::getName, name)
.ne(id != null, SysUser::getId, id)
);
return num != null && num > 0;
}
}

@ -1,23 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.model.entity.BizDocumentHistory;
import cn.toesbieya.jxc.model.vo.search.DocumentHistorySearch;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class BizDocumentHistoryService {
@Resource
private BizDocumentHistoryMapper historyMapper;
public List<BizDocumentHistory> search(DocumentHistorySearch vo) {
return historyMapper.search(vo);
}
public List<BizDocumentHistory> getByPid(String pid) {
return historyMapper.getByPid(pid);
}
}

@ -1,15 +1,18 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.model.entity.BizStock;
import cn.toesbieya.jxc.model.vo.export.StockExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.StockSearchResult;
import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.utils.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@ -19,7 +22,7 @@ import java.util.List;
@Slf4j
public class BizStockService {
@Resource
private BizStockMapper stockMapper;
private BizStockMapper mapper;
private final ExcelUtil.CommonMergeOptions mergeOptions =
new ExcelUtil.CommonMergeOptions(
@ -30,19 +33,50 @@ public class BizStockService {
public PageResult<StockSearchResult> search(StockSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(stockMapper.search(vo));
return new PageResult<>(getByCondition(vo));
}
public List<StockSearchResult> getByCondition(StockSearch vo) {
return mapper.search(getSearchCondition(vo));
}
@SuppressWarnings("unchecked")
public List<BizStock> getDetail(String cids) {
return stockMapper.getDetail(cids);
return mapper.selectList(
Wrappers.lambdaQuery(BizStock.class)
.inSql(!StringUtils.isEmpty(cids), BizStock::getCid, cids)
.gt(BizStock::getNum, 0)
.orderByDesc(BizStock::getCgddid, BizStock::getCgrkid)
);
}
public List<BizStock> getDetailById(String ids) {
return stockMapper.getDetailById(ids);
return mapper.selectList(
Wrappers.lambdaQuery(BizStock.class)
.inSql(!StringUtils.isEmpty(ids), BizStock::getId, ids)
);
}
public void export(StockSearch vo, HttpServletResponse response) throws Exception {
List<StockExport> list = stockMapper.export(vo);
List<StockExport> list = mapper.export(getSearchCondition(vo));
ExcelUtil.export(list, response, "库存导出", mergeOptions);
}
private Wrapper<BizStock> getSearchCondition(StockSearch vo) {
String ids = vo.getIds();
String cids = vo.getCids();
String cgddids = vo.getCgddids();
String cgrkids = vo.getCgrkids();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
return Wrappers.lambdaQuery(BizStock.class)
.inSql(!StringUtils.isEmpty(ids), BizStock::getId, ids)
.inSql(!StringUtils.isEmpty(cids), BizStock::getCid, cids)
.inSql(!StringUtils.isEmpty(cgddids), BizStock::getCgddid, cgddids)
.inSql(!StringUtils.isEmpty(cgrkids), BizStock::getCgrkid, cgrkids)
.gt(BizStock::getNum, 0)
.ge(startTime != null, BizStock::getCtime, startTime)
.le(endTime != null, BizStock::getCtime, endTime);
}
}

@ -1,26 +1,29 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.enumeration.RecLoginHistoryEnum;
import cn.toesbieya.jxc.enumeration.UserActionEnum;
import cn.toesbieya.jxc.mapper.RecAttachmentMapper;
import cn.toesbieya.jxc.mapper.RecLoginHistoryMapper;
import cn.toesbieya.jxc.mapper.RecUserActionMapper;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import cn.toesbieya.jxc.model.entity.RecLoginHistory;
import cn.toesbieya.jxc.model.entity.RecUserAction;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.LoginHistorySearch;
import cn.toesbieya.jxc.model.vo.search.UserActionSearch;
import cn.toesbieya.jxc.utils.IpUtil;
import cn.toesbieya.jxc.utils.QiniuUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.RecAttachmentMapper;
import cn.toesbieya.jxc.mapper.RecLoginHistoryMapper;
import cn.toesbieya.jxc.mapper.RecUserActionMapper;
import cn.toesbieya.jxc.utils.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Service
@Slf4j
@ -33,55 +36,104 @@ public class RecService {
private RecAttachmentMapper attachmentMapper;
public PageResult<RecLoginHistory> searchLoginHistory(LoginHistorySearch vo) {
Integer uid = vo.getUid();
String uname = vo.getUname();
Integer type = vo.getType();
String ip = vo.getIp();
String address = vo.getAddress();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
Wrapper<RecLoginHistory> wrapper =
Wrappers.lambdaQuery(RecLoginHistory.class)
.eq(uid != null, RecLoginHistory::getUid, uid)
.like(!StringUtils.isEmpty(uname), RecLoginHistory::getUname, vo.getUname())
.eq(type != null, RecLoginHistory::getType, type)
.eq(!StringUtils.isEmpty(ip), RecLoginHistory::getIp, vo.getIp())
.like(!StringUtils.isEmpty(address), RecLoginHistory::getAddress, vo.getAddress())
.ge(startTime != null, RecLoginHistory::getTime, startTime)
.le(endTime != null, RecLoginHistory::getTime, endTime)
.orderByDesc(RecLoginHistory::getTime);
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<RecLoginHistory> list = loginHistoryMapper.search(vo);
return new PageResult<>(list);
return new PageResult<>(loginHistoryMapper.selectList(wrapper));
}
public PageResult<RecUserAction> searchUserAction(UserActionSearch vo) {
Integer uid = vo.getUid();
String uname = vo.getUname();
String type = vo.getType();
String ip = vo.getIp();
String url = vo.getUrl();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
Wrapper<RecUserAction> wrapper =
Wrappers.lambdaQuery(RecUserAction.class)
.eq(uid != null, RecUserAction::getUid, uid)
.like(!StringUtils.isEmpty(uname), RecUserAction::getUname, uname)
.inSql(!StringUtils.isEmpty(type), RecUserAction::getType, type)
.eq(!StringUtils.isEmpty(ip), RecUserAction::getIp, ip)
.eq(!StringUtils.isEmpty(url), RecUserAction::getUrl, url)
.ge(startTime != null, RecUserAction::getTime, startTime)
.le(endTime != null, RecUserAction::getTime, endTime)
.orderByDesc(RecUserAction::getTime);
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<RecUserAction> list = userActionMapper.search(vo);
return new PageResult<>(list);
return new PageResult<>(userActionMapper.selectList(wrapper));
}
public List<RecAttachment> getAttachmentByPid(String pid) {
return attachmentMapper.getByPid(pid);
if (StringUtils.isEmpty(pid)) {
return Collections.emptyList();
}
return attachmentMapper.selectList(
Wrappers.lambdaQuery(RecAttachment.class)
.eq(RecAttachment::getPid, pid)
.orderByAsc(RecAttachment::getSort)
);
}
public void handleAttachment(List<RecAttachment> uploadImageList, List<String> deleteImageList) {
if (uploadImageList != null && uploadImageList.size() > 0) {
attachmentMapper.add(uploadImageList);
if (!CollectionUtils.isEmpty(uploadImageList)) {
attachmentMapper.insertBatch(uploadImageList);
}
if (deleteImageList != null && deleteImageList.size() > 0) {
attachmentMapper.delByUrls(deleteImageList);
QiniuUtil.deleteBatch(deleteImageList.toArray(new String[0]));
if (!CollectionUtils.isEmpty(deleteImageList)) {
attachmentMapper.delete(
Wrappers.lambdaQuery(RecAttachment.class)
.in(RecAttachment::getUrl, deleteImageList)
);
QiniuUtil.deleteBatch(deleteImageList);
}
}
public void delAttachmentByPid(String pid) {
List<String> urls = attachmentMapper.getUrlByPid(pid);
if (urls.size() == 0) return;
attachmentMapper.delByPid(pid);
QiniuUtil.deleteBatch(urls.toArray(new String[0]));
List<RecAttachment> list = attachmentMapper.selectList(
Wrappers.lambdaQuery(RecAttachment.class)
.eq(RecAttachment::getPid, pid)
);
if (CollectionUtils.isEmpty(list)) return;
attachmentMapper.delete(Wrappers.lambdaQuery(RecAttachment.class).eq(RecAttachment::getPid, pid));
List<String> urls = list.stream().map(RecAttachment::getUrl).collect(Collectors.toList());
QiniuUtil.deleteBatch(urls);
}
@Async("dbInsertExecutor")
public void insertLoginHistory(UserVo user, String ip, RecLoginHistoryEnum historyEnum) {
RecLoginHistory history = RecLoginHistory.builder()
.uid(user.getId())
.uname(user.getName())
.ip(ip)
.type(historyEnum.getCode())
.time(System.currentTimeMillis())
.build();
history.setAddress(IpUtil.getIpAddress(ip));
public void insertLoginHistory(RecLoginHistory history) {
if (StringUtils.isEmpty(history.getAddress())) {
history.setAddress(IpUtil.getIpAddress(history.getIp()));
}
history.setId(null);
loginHistoryMapper.insert(history);
}
@Async("dbInsertExecutor")
public void insertUserAction(RecUserAction action, UserActionEnum type) {
action.setTime(System.currentTimeMillis());
action.setType(type.getCode());
public void insertUserAction(RecUserAction action) {
action.setId(null);
userActionMapper.insert(action);
}
}

@ -21,7 +21,7 @@ import java.util.Map;
@Slf4j
public class StatisticService {
@Resource
private StatisticMapper statisticMapper;
private StatisticMapper mapper;
//获取首页四个色块的数据,在线用户、今日采购额、今日销售额、今日毛利润
public FourBlockStat getFourBlock() {
@ -29,8 +29,8 @@ public class StatisticService {
FourBlockStat stat = new FourBlockStat();
BigDecimal purchase = statisticMapper.getPurchaseOrderDailyTotalPurchasePrice(now, null);
BigDecimal sell = statisticMapper.getSellOrderDailyTotalPurchasePrice(now, null);
BigDecimal purchase = mapper.getPurchaseOrderDailyTotalPurchasePrice(now, null);
BigDecimal sell = mapper.getSellOrderDailyTotalPurchasePrice(now, null);
long onlineNum = WebSocketUtil.getOnlineUserNum();
@ -45,25 +45,25 @@ public class StatisticService {
//获取历史七天的每日采购额、销售额、毛利润
public List<StatProfitTotal> getDailyProfitStat() {
long lastWeekDay = DateUtil.getTimestampBeforeNow(7);
return statisticMapper.searchTotalProfit(lastWeekDay, null);
return mapper.searchTotalProfit(lastWeekDay, null);
}
//获取历史七天已完成的采购订单数、销售订单数
public List<StatFinishOrder> getDailyFinishOrder() {
long lastWeekDay = DateUtil.getTimestampBeforeNow(7);
return statisticMapper.searchFinishOrder(lastWeekDay, null);
return mapper.searchFinishOrder(lastWeekDay, null);
}
//获取每种商品的采购总额、销售总额、总毛利
public Collection<StatProfitGoods> getTotalProfitGoods() {
//获取历史的信息
List<StatProfitGoods> history = statisticMapper.getHistoryTotalProfitGoods();
List<StatProfitGoods> history = mapper.getHistoryTotalProfitGoods();
//获取今日的信息
long today = DateUtil.getTimestampNow();
long nextDay = DateUtil.getTimestampBeforeNow(-1);
history.addAll(statisticMapper.getPurchaseOrderDailyProfitGoods(today, nextDay));
history.addAll(statisticMapper.getSellOrderDailyProfitGoods(today, nextDay));
history.addAll(mapper.getPurchaseOrderDailyProfitGoods(today, nextDay));
history.addAll(mapper.getSellOrderDailyProfitGoods(today, nextDay));
Map<Integer, StatProfitGoods> map = new HashMap<>(history.size());

@ -1,79 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import cn.toesbieya.jxc.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysCategoryService {
@Resource
private SysCategoryMapper categoryMapper;
public List<SysCategory> getAll() {
return categoryMapper.getAll();
}
public List<SysCategory> search(CategorySearch vo) {
return categoryMapper.search(vo);
}
@UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid")
public Result add(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("添加失败," + err);
int rows = categoryMapper.add(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id")
public Result update(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("修改失败," + err);
int rows = categoryMapper.update(category);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试");
}
@UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id")
public Result del(SysCategory category) {
Integer cid = category.getId();
if (categoryMapper.hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点");
}
if (categoryMapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除");
}
int rows = categoryMapper.del(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
}
private String check(SysCategory category) {
if (category.getPid() != 0) {
SysCategory parent = categoryMapper.getById(category.getPid());
if (parent == null || parent.getType() == 1) {
return "父节点状态变更,请刷新后重试";
}
}
if (categoryMapper.isNameExist(category.getName(), category.getId())) {
return String.format("分类【%s】已存在",category.getName());
}
if (category.getId() != null && category.getType() == 1) {
if (categoryMapper.hasChildren(category.getId())) {
return "该分类下存在子节点,不能改为实体类型";
}
}
return null;
}
}

@ -1,58 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysCustomer;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.CustomerSearch;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysCustomerMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysCustomerService {
@Resource
private SysCustomerMapper customerMapper;
public List<RegionValueResult> getLimitRegion() {
return customerMapper.getLimitRegion();
}
public List<SysCustomer> get() {
return customerMapper.get();
}
public PageResult<SysCustomer> search(CustomerSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<SysCustomer> SysCustomers = customerMapper.search(vo);
return new PageResult<>(SysCustomers);
}
@UserAction("'添加客户:'+ #customer.name")
public Result add(SysCustomer customer) {
if (customerMapper.isNameExist(customer.getName(), null)) {
return Result.fail("添加失败,客户【" + customer.getName() + "】已存在");
}
int rows = customerMapper.add(customer);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改客户:'+ #customer.name")
public Result update(SysCustomer customer) {
if (customerMapper.isNameExist(customer.getName(), customer.getId())) {
return Result.fail("修改失败,客户【" + customer.getName() + "】已存在");
}
int rows = customerMapper.update(customer);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
}
@UserAction("删除客户:'+ #customer.name")
public Result del(SysCustomer customer) {
int rows = customerMapper.del(customer.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
}

@ -1,71 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.model.entity.SysResource;
import cn.toesbieya.jxc.mapper.SysResourceMapper;
import cn.toesbieya.jxc.module.request.RequestModule;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@Service
@Slf4j
public class SysResourceService {
@Resource
private SysResourceMapper resourceMapper;
public List<SysResource> get() {
List<SysResource> list = resourceMapper.get();
completeNode(list);
return list;
}
public List<SysResource> getAll() {
List<SysResource> list = resourceMapper.getAll();
completeNode(list);
return list;
}
public List<SysResource> getByRole(int role) {
List<SysResource> list = resourceMapper.getByRole(role);
completeNode(list);
return list;
}
public Result update(SysResource resource) {
int rows = resourceMapper.update(resource);
if (rows > 0) {
RequestModule.updateRate(resource.getUrl(), resource.getTotalRate(), resource.getIpRate());
}
return Result.success("修改成功");
}
private void completeNode(List<SysResource> list) {
HashMap<Integer, String> url = new HashMap<>(128);
HashMap<Integer, String> name = new HashMap<>(128);
for (SysResource resource : list) {
//pid为0时跳过
if (resource.getPid() == 0) {
url.put(resource.getId(), resource.getUrl());
name.put(resource.getId(), resource.getName());
resource.setFullname(resource.getName());
continue;
}
//获取父节点进行拼接
String parentUrl = url.get(resource.getPid());
String parentName = name.get(resource.getPid());
assert !StringUtils.isEmpty(parentUrl) && !StringUtils.isEmpty(parentName);
resource.setUrl(parentUrl + resource.getUrl());
resource.setFullname(parentName + " - " + resource.getName());
url.put(resource.getId(), resource.getUrl());
name.put(resource.getId(), resource.getFullname());
}
}
}

@ -1,56 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysRole;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.RoleSearch;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysRoleMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysRoleService {
@Resource
private SysRoleMapper roleMapper;
public List<SysRole> get() {
return roleMapper.get();
}
public List<SysRole> getAll() {
return roleMapper.getAll();
}
public PageResult<SysRole> search(RoleSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(roleMapper.search(vo));
}
@UserAction("'添加角色:'+#role.name")
public Result add(SysRole role) {
if (roleMapper.isNameExist(role.getName(), null)) {
return Result.fail("添加失败,角色名称重复");
}
int rows = roleMapper.insert(role);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改角色:'+#role.name")
public Result update(SysRole role) {
if (roleMapper.isNameExist(role.getName(), role.getId())) {
return Result.fail("修改失败,角色名称重复");
}
roleMapper.update(role);
return Result.success("修改成功");
}
@UserAction("'删除角色:'+#role.name")
public Result del(SysRole role) {
int rows = roleMapper.del(role.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
}

@ -1,58 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysSupplier;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.RegionValueResult;
import cn.toesbieya.jxc.model.vo.search.SupplierSearch;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysSupplierMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysSupplierService {
@Resource
private SysSupplierMapper supplierMapper;
public List<RegionValueResult> getLimitRegion() {
return supplierMapper.getLimitRegion();
}
public List<SysSupplier> get() {
return supplierMapper.get();
}
public PageResult<SysSupplier> search(SupplierSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<SysSupplier> sysSuppliers = supplierMapper.search(vo);
return new PageResult<>(sysSuppliers);
}
@UserAction("'添加供应商:'+ #supplier.name")
public Result add(SysSupplier supplier) {
if (supplierMapper.isNameExist(supplier.getName(), null)) {
return Result.fail("添加失败,供应商【" + supplier.getName() + "】已存在");
}
int rows = supplierMapper.add(supplier);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改供应商:'+ #supplier.name")
public Result update(SysSupplier supplier) {
if (supplierMapper.isNameExist(supplier.getName(), supplier.getId())) {
return Result.fail("修改失败,供应商【" + supplier.getName() + "】已存在");
}
int rows = supplierMapper.update(supplier);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
}
@UserAction("删除供应商:'+ #supplier.name")
public Result del(SysSupplier supplier) {
int rows = supplierMapper.del(supplier.getId());
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
}

@ -1,95 +0,0 @@
package cn.toesbieya.jxc.service;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.UserSearch;
import cn.toesbieya.jxc.utils.Util;
import cn.toesbieya.jxc.utils.WebSocketUtil;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.SysUserMapper;
import cn.toesbieya.jxc.model.vo.Result;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SysUserService {
private static final String DEFAULT_PWD = DigestUtils.md5DigestAsHex("123456".getBytes());
@Resource
private SysUserMapper userMapper;
public PageResult<UserVo> search(UserSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<UserVo> users = userMapper.search(vo);
//当前在线的用户id
Set<Integer> onlineUserIds = WebSocketUtil.getOnlineUserIds();
//设置在线情况
for (UserVo user : users) {
user.setOnline(Util.some(onlineUserIds, i -> user.getId().equals(i)));
}
return new PageResult<>(users);
}
@UserAction("'添加用户:'+#user.name")
public Result add(SysUser user) {
if (userMapper.isNameExist(user.getName(), null)) {
return Result.fail("该用户名称已存在");
}
user.setCtime(System.currentTimeMillis());
user.setPwd(DEFAULT_PWD);
userMapper.insert(user);
return Result.success("添加成功");
}
@UserAction("'修改用户:'+#user.name")
public Result update(SysUser user) {
if (userMapper.isNameExist(user.getName(), user.getId())) {
return Result.fail("该用户名称已存在");
}
userMapper.update(user);
return Result.success("修改成功");
}
@UserAction("'删除用户:'+#user.name")
@Transactional(rollbackFor = Exception.class)
public Result del(SysUser user) {
int rows = userMapper.deleteById(user.getId());
WebSocketUtil.sendLogoutEvent(Collections.singletonList(user.getId()), "该用户已删除");
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
}
@UserAction
public Result kick(List<SysUser> users) {
WebSocketUtil.sendLogoutEvent(
users
.stream()
.map(SysUser::getId)
.collect(Collectors.toList()),
"你已被强制下线,请重新登陆"
);
return Result.success("踢出成功");
}
@UserAction("'重置用户密码:'+#user.name")
public Result resetPwd(SysUser user) {
int rows = userMapper.resetPwd(user.getId(), DEFAULT_PWD);
return rows > 0 ? Result.success() : Result.fail("重置失败,未匹配到用户");
}
}

@ -0,0 +1,36 @@
package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.model.entity.BizDocHistory;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.DocHistorySearch;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
@Service
public class BizDocHistoryService {
@Resource
private BizDocHistoryMapper mapper;
public PageResult<BizDocHistory> search(DocHistorySearch vo) {
String pid=vo.getPid();
String type = vo.getType();
String uid = vo.getUid();
String uname = vo.getUname();
Wrapper<BizDocHistory> wrapper = Wrappers.lambdaQuery(BizDocHistory.class)
.eq(!StringUtils.isEmpty(pid), BizDocHistory::getPid, pid)
.inSql(!StringUtils.isEmpty(type), BizDocHistory::getType, type)
.inSql(!StringUtils.isEmpty(uid), BizDocHistory::getUid, uid)
.like(!StringUtils.isEmpty(uname), BizDocHistory::getUname, uname)
.orderByDesc(BizDocHistory::getId);
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mapper.selectList(wrapper));
}
}

@ -1,4 +1,4 @@
package cn.toesbieya.jxc.service;
package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
@ -6,20 +6,21 @@ import cn.toesbieya.jxc.enumeration.DocFinishEnum;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import cn.toesbieya.jxc.mapper.BizPurchaseInboundMapper;
import cn.toesbieya.jxc.mapper.BizPurchaseOrderMapper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.PurchaseInboundVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseInboundExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.PurchaseInboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.utils.DocumentUtil;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.Util;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -39,61 +40,72 @@ public class BizPurchaseInboundService {
@Resource
private BizPurchaseInboundMapper mainMapper;
@Resource
private BizPurchaseInboundSubMapper subMapper;
@Resource
private BizPurchaseOrderMapper orderMapper;
@Resource
private BizDocumentHistoryMapper historyMapper;
private BizPurchaseOrderSubMapper orderSubMapper;
@Resource
private BizDocHistoryMapper historyMapper;
@Resource
private BizStockMapper stockMapper;
@Resource
private RecService recService;
public BizPurchaseInbound getById(String id) {
BizPurchaseInbound main = mainMapper.getById(id);
//组装子表、附件列表的数据
public PurchaseInboundVo getById(String id) {
BizPurchaseInbound main = mainMapper.selectById(id);
if (main == null) return null;
main.setData(this.getSubById(id));
main.setImageList(recService.getAttachmentByPid(id));
PurchaseInboundVo vo = new PurchaseInboundVo(main);
return main;
vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return vo;
}
//根据主表ID获取子表
public List<BizPurchaseInboundSub> getSubById(String id) {
return mainMapper.getSubById(id);
return subMapper.selectList(
Wrappers.lambdaQuery(BizPurchaseInboundSub.class)
.eq(BizPurchaseInboundSub::getPid, id)
);
}
public PageResult<BizPurchaseInbound> search(PurchaseInboundSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo));
return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
}
public void export(PurchaseInboundSearch vo, HttpServletResponse response) throws Exception {
List<PurchaseInboundExport> list = mainMapper.export(vo);
List<PurchaseInboundExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "采购入库单导出");
}
@UserAction("'添加采购入库单'")
@Transactional(rollbackFor = Exception.class)
public Result add(BizPurchaseInbound doc) {
public Result add(PurchaseInboundVo doc) {
return addMain(doc);
}
@UserAction("'修改采购入库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(BizPurchaseInbound doc) {
public Result update(PurchaseInboundVo doc) {
return updateMain(doc);
}
@UserAction("'提交采购入库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(BizPurchaseInbound doc) {
public Result commit(PurchaseInboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
@ -111,16 +123,16 @@ public class BizPurchaseInboundService {
@UserAction("'撤回采购入库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) {
public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
@ -138,18 +150,27 @@ public class BizPurchaseInboundService {
@UserAction("'通过采购入库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) {
public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
String pid = vo.getPid();
long now = System.currentTimeMillis();
//检查采购订单状态、入库商品是否符合订单要求
List<BizPurchaseInboundSub> inboundSubList = mainMapper.getSubById(vo.getId());
String err = checkOrder(vo.getPid(), inboundSubList);
List<BizPurchaseInboundSub> subList = getSubById(id);
String err = checkOrder(pid, subList);
if (err != null) return Result.fail("通过失败," + err);
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) {
if (1 > mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseInbound::getVid, user.getId())
.set(BizPurchaseInbound::getVname, user.getName())
.set(BizPurchaseInbound::getVtime, now)
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
}
@ -157,8 +178,7 @@ public class BizPurchaseInboundService {
List<BizStock> stockList = new ArrayList<>();
DocFinishEnum finish = DocFinishEnum.FINISHED;
//使用一级缓存
List<BizPurchaseOrderSub> orderSubList = orderMapper.getSubById(pid);
List<BizPurchaseOrderSub> orderSubList = getOrderSubListByPid(pid);
//生成需要入库的商品列表
for (BizPurchaseOrderSub orderSub : orderSubList) {
@ -166,7 +186,7 @@ public class BizPurchaseInboundService {
continue;
}
BizPurchaseInboundSub inboundSub = Util.find(inboundSubList, i -> i.getCid().equals(orderSub.getCid()));
BizPurchaseInboundSub inboundSub = Util.find(subList, i -> i.getCid().equals(orderSub.getCid()));
if (inboundSub == null) continue;
@ -185,28 +205,38 @@ public class BizPurchaseInboundService {
}
//更新采购订单子表的remainNum
orderMapper.updateSubRemainNum(orderSub.getId(), gap);
orderSubMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrderSub.class)
.set(BizPurchaseOrderSub::getRemainNum, gap)
.eq(BizPurchaseOrderSub::getId, orderSub.getId())
);
}
//更新采购订单完成情况
if (1 > orderMapper.updateFinish(pid, finish.getCode(), finish == DocFinishEnum.FINISHED ? now : null)) {
if (1 > orderMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getFinish, finish.getCode())
.set(BizPurchaseOrder::getFtime, finish == DocFinishEnum.FINISHED ? now : null)
.eq(BizPurchaseOrder::getId, pid)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
)) {
throw new JsonResultException("通过失败,采购订单状态有误,请刷新重试");
}
//插入库存
if (stockList.size() == 0) throw new JsonResultException("通过失败,入库异常");
stockMapper.batchInsert(stockList);
if (stockList.isEmpty()) throw new JsonResultException("通过失败,入库异常");
stockMapper.insertBatch(stockList);
historyMapper.insert(
BizDocumentHistory.builder()
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
.uname(user.getName())
BizDocHistory
.builder()
.pid(id).type(DocHistoryEnum.PASS.getCode())
.uid(user.getId()).uname(user.getName())
.statusBefore(DocStatusEnum.WAIT_VERIFY.getCode())
.statusAfter(DocStatusEnum.VERIFIED.getCode())
.time(now)
.info(info)
.time(now).info(info)
.build()
);
@ -216,16 +246,16 @@ public class BizPurchaseInboundService {
@UserAction("'驳回采购入库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) {
public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
@ -244,24 +274,24 @@ public class BizPurchaseInboundService {
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
if (mainMapper.del(id) < 1) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
}
//同时删除子表和附件
mainMapper.delSubByPid(id);
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
}
private Result addMain(BizPurchaseInbound doc) {
private Result addMain(PurchaseInboundVo doc) {
List<BizPurchaseInboundSub> subList = doc.getData();
String err = checkOrder(doc.getPid(), subList);
if (err != null) return Result.fail(err);
String id = DocumentUtil.getDocumentID("CGRK");
String id = DocUtil.getDocId("CGRK");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
@ -273,7 +303,7 @@ public class BizPurchaseInboundService {
subList.forEach(sub -> sub.setPid(id));
mainMapper.insert(doc);
mainMapper.addSub(subList);
subMapper.insertBatch(subList);
//插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -287,7 +317,7 @@ public class BizPurchaseInboundService {
return Result.success("添加成功", id);
}
private Result updateMain(BizPurchaseInbound doc) {
private Result updateMain(PurchaseInboundVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
@ -295,13 +325,20 @@ public class BizPurchaseInboundService {
if (err != null) return Result.fail(err);
//更新主表
mainMapper.update(doc);
mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getPid, doc.getPid())
.set(BizPurchaseInbound::getStatus, doc.getStatus())
.set(BizPurchaseInbound::getRemark, doc.getRemark())
.eq(BizPurchaseInbound::getId, docId)
);
//删除旧的子表
mainMapper.delSubByPid(docId);
delSubByPid(docId);
//插入新的子表
mainMapper.addSub(doc.getData());
subMapper.insertBatch(doc.getData());
//附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -317,7 +354,7 @@ public class BizPurchaseInboundService {
//只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) {
BizPurchaseInbound doc = mainMapper.getById(id);
BizPurchaseInbound doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试";
}
@ -326,7 +363,7 @@ public class BizPurchaseInboundService {
//检查采购订单是否已审核、未完成、还有未入库的商品
private String checkOrder(String pid, List<BizPurchaseInboundSub> docSubList) {
BizPurchaseOrder order = orderMapper.getById(pid);
BizPurchaseOrder order = orderMapper.selectById(pid);
if (order == null
|| !order.getStatus().equals(DocStatusEnum.VERIFIED.getCode())
@ -335,7 +372,7 @@ public class BizPurchaseInboundService {
return "采购订单状态异常";
}
List<BizPurchaseOrderSub> orderSubList = orderMapper.getSubById(pid);
List<BizPurchaseOrderSub> orderSubList = getOrderSubListByPid(pid);
if (CollectionUtils.isEmpty(orderSubList)) return "没有找到采购订单的数据";
@ -355,4 +392,39 @@ public class BizPurchaseInboundService {
}
return null;
}
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizPurchaseInboundSub.class)
.eq(BizPurchaseInboundSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseInbound.class)
.set(BizPurchaseInbound::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizPurchaseInbound::getId, id)
.eq(BizPurchaseInbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private List<BizPurchaseOrderSub> getOrderSubListByPid(String pid) {
return orderSubMapper.selectList(
Wrappers.lambdaQuery(BizPurchaseOrderSub.class)
.eq(BizPurchaseOrderSub::getPid, pid)
);
}
private Wrapper<BizPurchaseInbound> getSearchCondition(PurchaseInboundSearch vo) {
String pid = vo.getPid();
String pidFuzzy = vo.getPidFuzzy();
return DocUtil.baseCondition(BizPurchaseInbound.class, vo)
.eq(pid != null, BizPurchaseInbound::getPid, pid)
.like(!StringUtils.isEmpty(pidFuzzy), BizPurchaseInbound::getPid, pidFuzzy);
}
}

@ -1,24 +1,29 @@
package cn.toesbieya.jxc.service;
package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.mapper.BizPurchaseOrderMapper;
import cn.toesbieya.jxc.model.entity.BizDocumentHistory;
import cn.toesbieya.jxc.mapper.BizPurchaseOrderSubMapper;
import cn.toesbieya.jxc.model.entity.BizDocHistory;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrder;
import cn.toesbieya.jxc.model.entity.BizPurchaseOrderSub;
import cn.toesbieya.jxc.model.entity.RecAttachment;
import cn.toesbieya.jxc.model.vo.PurchaseOrderVo;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.PurchaseOrderExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.PurchaseOrderSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import cn.toesbieya.jxc.utils.DocumentUtil;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -34,57 +39,66 @@ public class BizPurchaseOrderService {
@Resource
private BizPurchaseOrderMapper mainMapper;
@Resource
private BizDocumentHistoryMapper historyMapper;
private BizPurchaseOrderSubMapper subMapper;
@Resource
private BizDocHistoryMapper historyMapper;
@Resource
private RecService recService;
public BizPurchaseOrder getById(String id) {
BizPurchaseOrder main = mainMapper.getById(id);
//组装子表、附件列表的数据
public PurchaseOrderVo getById(String id) {
BizPurchaseOrder main = mainMapper.selectById(id);
if (main == null) return null;
main.setData(this.getSubById(id));
main.setImageList(recService.getAttachmentByPid(id));
PurchaseOrderVo vo = new PurchaseOrderVo(main);
vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return main;
return vo;
}
//根据主表ID获取子表
public List<BizPurchaseOrderSub> getSubById(String id) {
return mainMapper.getSubById(id);
return subMapper.selectList(
Wrappers.lambdaQuery(BizPurchaseOrderSub.class)
.eq(BizPurchaseOrderSub::getPid, id)
);
}
public PageResult<BizPurchaseOrder> search(PurchaseOrderSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo));
return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
}
public void export(PurchaseOrderSearch vo, HttpServletResponse response) throws Exception {
List<PurchaseOrderExport> list = mainMapper.export(vo);
List<PurchaseOrderExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "采购订单导出");
}
@UserAction("'添加采购订单'")
@Transactional(rollbackFor = Exception.class)
public Result add(BizPurchaseOrder doc) {
public Result add(PurchaseOrderVo doc) {
return addMain(doc);
}
@UserAction("'修改采购订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(BizPurchaseOrder doc) {
public Result update(PurchaseOrderVo doc) {
return updateMain(doc);
}
@UserAction("'提交采购订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(BizPurchaseOrder doc) {
public Result commit(PurchaseOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
@ -102,16 +116,16 @@ public class BizPurchaseOrderService {
@UserAction("'撤回采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) {
public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
@ -129,17 +143,26 @@ public class BizPurchaseOrderService {
@UserAction("'通过采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) {
public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
long now = System.currentTimeMillis();
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) {
if (0 == mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizPurchaseOrder::getVid, user.getId())
.set(BizPurchaseOrder::getVname, user.getName())
.set(BizPurchaseOrder::getVtime, now)
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
@ -157,16 +180,16 @@ public class BizPurchaseOrderService {
@UserAction("'驳回采购订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) {
public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
@ -185,19 +208,19 @@ public class BizPurchaseOrderService {
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
if (mainMapper.del(id) < 1) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
}
//同时删除子表和附件
mainMapper.delSubByPid(id);
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
}
private Result addMain(BizPurchaseOrder doc) {
String id = DocumentUtil.getDocumentID("CGDD");
private Result addMain(PurchaseOrderVo doc) {
String id = DocUtil.getDocId("CGDD");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
@ -215,7 +238,7 @@ public class BizPurchaseOrderService {
//插入主表和子表
mainMapper.insert(doc);
mainMapper.addSub(subList);
subMapper.insertBatch(subList);
//插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -229,22 +252,31 @@ public class BizPurchaseOrderService {
return Result.success("添加成功", id);
}
private Result updateMain(BizPurchaseOrder doc) {
private Result updateMain(PurchaseOrderVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err != null) return Result.fail(err);
//更新主表
mainMapper.update(doc);
mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getSid, doc.getSid())
.set(BizPurchaseOrder::getSname, doc.getSname())
.set(BizPurchaseOrder::getStatus, doc.getStatus())
.set(BizPurchaseOrder::getTotal, doc.getTotal())
.set(BizPurchaseOrder::getRemark, doc.getRemark())
.eq(BizPurchaseOrder::getId, docId)
);
//删除旧的子表
mainMapper.delSubByPid(docId);
delSubByPid(docId);
//插入新的子表
List<BizPurchaseOrderSub> subList = doc.getData();
subList.forEach(sub -> sub.setRemainNum(sub.getNum()));
mainMapper.addSub(subList);
subMapper.insertBatch(subList);
//附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -260,10 +292,44 @@ public class BizPurchaseOrderService {
//只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) {
BizPurchaseOrder doc = mainMapper.getById(id);
BizPurchaseOrder doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试";
}
return null;
}
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizPurchaseOrderSub.class)
.eq(BizPurchaseOrderSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizPurchaseOrder.class)
.set(BizPurchaseOrder::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizPurchaseOrder::getId, id)
.eq(BizPurchaseOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private Wrapper<BizPurchaseOrder> getSearchCondition(PurchaseOrderSearch vo) {
Integer sid = vo.getSid();
String sname = vo.getSname();
String finish = vo.getFinish();
Long ftimeStart = vo.getFtimeStart();
Long ftimeEnd = vo.getFtimeEnd();
return DocUtil.baseCondition(BizPurchaseOrder.class, vo)
.eq(sid != null, BizPurchaseOrder::getSid, sid)
.like(!StringUtils.isEmpty(sname), BizPurchaseOrder::getSname, sname)
.inSql(!StringUtils.isEmpty(finish), BizPurchaseOrder::getFinish, finish)
.ge(ftimeStart != null, BizPurchaseOrder::getCtime, ftimeStart)
.le(ftimeEnd != null, BizPurchaseOrder::getCtime, ftimeEnd);
}
}

@ -1,23 +1,28 @@
package cn.toesbieya.jxc.service;
package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import cn.toesbieya.jxc.mapper.BizDocHistoryMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderMapper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderSubMapper;
import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOrderVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOrderExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.result.StockSearchResult;
import cn.toesbieya.jxc.model.vo.search.SellOrderSearch;
import cn.toesbieya.jxc.model.vo.search.StockSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.utils.DocumentUtil;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil;
import cn.toesbieya.jxc.model.vo.Result;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -36,58 +41,68 @@ public class BizSellOrderService {
@Resource
private BizSellOrderMapper mainMapper;
@Resource
private BizStockMapper stockMapper;
private BizSellOrderSubMapper subMapper;
@Resource
private BizDocumentHistoryMapper historyMapper;
private BizDocHistoryMapper historyMapper;
@Resource
private BizStockService stockService;
@Resource
private RecService recService;
public BizSellOrder getById(String id) {
BizSellOrder main = mainMapper.getById(id);
//组装子表、附件列表的数据
public SellOrderVo getById(String id) {
BizSellOrder main = mainMapper.selectById(id);
if (main == null) return null;
main.setData(this.getSubById(id));
main.setImageList(recService.getAttachmentByPid(id));
SellOrderVo vo = new SellOrderVo(main);
return main;
vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return vo;
}
//根据主表ID获取子表
public List<BizSellOrderSub> getSubById(String id) {
return mainMapper.getSubById(id);
return subMapper.selectList(
Wrappers.lambdaQuery(BizSellOrderSub.class)
.eq(BizSellOrderSub::getPid, id)
);
}
public PageResult<BizSellOrder> search(SellOrderSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo));
return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
}
public void export(SellOrderSearch vo, HttpServletResponse response) throws Exception {
List<SellOrderExport> list = mainMapper.export(vo);
List<SellOrderExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "销售订单导出");
}
@UserAction("'添加销售订单'")
@Transactional(rollbackFor = Exception.class)
public Result add(BizSellOrder doc) {
public Result add(SellOrderVo doc) {
return addMain(doc);
}
@UserAction("'修改销售订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(BizSellOrder doc) {
public Result update(SellOrderVo doc) {
return updateMain(doc);
}
@UserAction("'提交销售订单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(BizSellOrder doc) {
public Result commit(SellOrderVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
@ -105,16 +120,16 @@ public class BizSellOrderService {
@UserAction("'撤回销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) {
public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
@ -132,17 +147,26 @@ public class BizSellOrderService {
@UserAction("'通过销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) {
public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
long now = System.currentTimeMillis();
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) {
if (0 == mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOrder::getVid, user.getId())
.set(BizSellOrder::getVname, user.getName())
.set(BizSellOrder::getVtime, now)
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
@ -160,16 +184,16 @@ public class BizSellOrderService {
@UserAction("'驳回销售订单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) {
public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
@ -188,22 +212,22 @@ public class BizSellOrderService {
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
if (mainMapper.del(id) < 1) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
}
//同时删除子表和附件
mainMapper.delSubByPid(id);
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
}
private Result addMain(BizSellOrder doc) {
private Result addMain(SellOrderVo doc) {
String err = checkStock(doc.getData());
if (err != null) return Result.fail(err);
String id = DocumentUtil.getDocumentID("XSDD");
String id = DocUtil.getDocId("XSDD");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
@ -220,7 +244,7 @@ public class BizSellOrderService {
//插入主表和子表
mainMapper.insert(doc);
mainMapper.addSub(subList);
subMapper.insertBatch(subList);
//插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -234,7 +258,7 @@ public class BizSellOrderService {
return Result.success("添加成功", id);
}
private Result updateMain(BizSellOrder doc) {
private Result updateMain(SellOrderVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
@ -242,15 +266,24 @@ public class BizSellOrderService {
if (err != null) return Result.fail(err);
//更新主表
mainMapper.update(doc);
mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getCustomerId, doc.getCustomerId())
.set(BizSellOrder::getCustomerName, doc.getCustomerName())
.set(BizSellOrder::getStatus, doc.getStatus())
.set(BizSellOrder::getTotal, doc.getTotal())
.set(BizSellOrder::getRemark, doc.getRemark())
.eq(BizSellOrder::getId, docId)
);
//删除旧的子表
mainMapper.delSubByPid(docId);
delSubByPid(docId);
//插入新的子表
List<BizSellOrderSub> subList = doc.getData();
subList.forEach(sub->sub.setRemainNum(sub.getNum()));
mainMapper.addSub(subList);
subList.forEach(sub -> sub.setRemainNum(sub.getNum()));
subMapper.insertBatch(subList);
//附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -266,7 +299,7 @@ public class BizSellOrderService {
//只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) {
BizSellOrder doc = mainMapper.getById(id);
BizSellOrder doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试";
}
@ -278,7 +311,7 @@ public class BizSellOrderService {
List<String> cids = list.stream().map(i -> String.valueOf(i.getCid())).collect(Collectors.toList());
StockSearch vo = new StockSearch();
vo.setCids(String.join(",", cids));
List<StockSearchResult> stockList = stockMapper.search(vo);
List<StockSearchResult> stockList = stockService.getByCondition(vo);
//list长度必然大于等于stockList长度
int subListLength = list.size();
@ -288,7 +321,7 @@ public class BizSellOrderService {
return String.format("商品【%s】库存不足", sub.getCname());
}
list.sort(Comparator.comparing(BizDocumentSub::getCid));
list.sort(Comparator.comparing(BizDocSub::getCid));
stockList.sort(Comparator.comparing(StockSearchResult::getCid));
for (int i = 0; i < subListLength; i++) {
BizSellOrderSub sub = list.get(i);
@ -300,4 +333,38 @@ public class BizSellOrderService {
return null;
}
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizSellOrderSub.class)
.eq(BizSellOrderSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizSellOrder::getId, id)
.eq(BizSellOrder::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private Wrapper<BizSellOrder> getSearchCondition(SellOrderSearch vo) {
Integer customerId = vo.getCustomerId();
String customerName = vo.getCustomerName();
String finish = vo.getFinish();
Long ftimeStart = vo.getFtimeStart();
Long ftimeEnd = vo.getFtimeEnd();
return DocUtil.baseCondition(BizSellOrder.class, vo)
.eq(customerId != null, BizSellOrder::getCustomerId, customerId)
.like(!StringUtils.isEmpty(customerName), BizSellOrder::getCustomerName, customerName)
.inSql(!StringUtils.isEmpty(finish), BizSellOrder::getFinish, finish)
.ge(ftimeStart != null, BizSellOrder::getCtime, ftimeStart)
.le(ftimeEnd != null, BizSellOrder::getCtime, ftimeEnd);
}
}

@ -1,4 +1,4 @@
package cn.toesbieya.jxc.service;
package cn.toesbieya.jxc.service.doc;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
@ -6,20 +6,22 @@ import cn.toesbieya.jxc.enumeration.DocFinishEnum;
import cn.toesbieya.jxc.enumeration.DocHistoryEnum;
import cn.toesbieya.jxc.enumeration.DocStatusEnum;
import cn.toesbieya.jxc.exception.JsonResultException;
import cn.toesbieya.jxc.mapper.BizDocumentHistoryMapper;
import cn.toesbieya.jxc.mapper.BizSellOrderMapper;
import cn.toesbieya.jxc.mapper.BizSellOutboundMapper;
import cn.toesbieya.jxc.mapper.BizStockMapper;
import cn.toesbieya.jxc.mapper.*;
import cn.toesbieya.jxc.model.entity.*;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SellOutboundVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.export.SellOutboundExport;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.SellOutboundSearch;
import cn.toesbieya.jxc.model.vo.update.DocumentStatusUpdate;
import cn.toesbieya.jxc.utils.DocumentUtil;
import cn.toesbieya.jxc.model.vo.update.DocStatusUpdate;
import cn.toesbieya.jxc.service.BizStockService;
import cn.toesbieya.jxc.service.RecService;
import cn.toesbieya.jxc.utils.DocUtil;
import cn.toesbieya.jxc.utils.ExcelUtil;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.utils.Util;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -41,9 +43,13 @@ public class BizSellOutboundService {
@Resource
private BizSellOutboundMapper mainMapper;
@Resource
private BizSellOutboundSubMapper subMapper;
@Resource
private BizSellOrderMapper orderMapper;
@Resource
private BizDocumentHistoryMapper historyMapper;
private BizSellOrderSubMapper orderSubMapper;
@Resource
private BizDocHistoryMapper historyMapper;
@Resource
private BizStockMapper stockMapper;
@Resource
@ -51,53 +57,60 @@ public class BizSellOutboundService {
@Resource
private BizStockService stockService;
public BizSellOutbound getById(String id) {
BizSellOutbound main = mainMapper.getById(id);
//组装子表、附件列表的数据
public SellOutboundVo getById(String id) {
BizSellOutbound main = mainMapper.selectById(id);
if (main == null) return null;
main.setData(this.getSubById(id));
main.setImageList(recService.getAttachmentByPid(id));
SellOutboundVo vo = new SellOutboundVo(main);
vo.setData(getSubById(id));
vo.setImageList(recService.getAttachmentByPid(id));
return main;
return vo;
}
public List<BizSellOutboundSub> getSubById(String pid) {
return mainMapper.getSubById(pid);
//根据主表ID获取子表
public List<BizSellOutboundSub> getSubById(String id) {
return subMapper.selectList(
Wrappers.lambdaQuery(BizSellOutboundSub.class)
.eq(BizSellOutboundSub::getPid, id)
);
}
public PageResult<BizSellOutbound> search(SellOutboundSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
return new PageResult<>(mainMapper.search(vo));
return new PageResult<>(mainMapper.selectList(getSearchCondition(vo)));
}
public void export(SellOutboundSearch vo, HttpServletResponse response) throws Exception {
List<SellOutboundExport> list = mainMapper.export(vo);
List<SellOutboundExport> list = mainMapper.export(getSearchCondition(vo));
ExcelUtil.exportSimply(list, response, "销售出库单导出");
}
@UserAction("'添加销售出库单'")
@Transactional(rollbackFor = Exception.class)
public Result add(BizSellOutbound doc) {
public Result add(SellOutboundVo doc) {
return addMain(doc);
}
@UserAction("'修改销售出库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result update(BizSellOutbound doc) {
public Result update(SellOutboundVo doc) {
return updateMain(doc);
}
@UserAction("'提交销售出库单'+#doc.id")
@Lock("#doc.id")
@Transactional(rollbackFor = Exception.class)
public Result commit(BizSellOutbound doc) {
public Result commit(SellOutboundVo doc) {
boolean isFirstCreate = StringUtils.isEmpty(doc.getId());
Result result = isFirstCreate ? addMain(doc) : updateMain(doc);
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(doc.getId())
.type(DocHistoryEnum.COMMIT.getCode())
.uid(doc.getCid())
@ -115,16 +128,16 @@ public class BizSellOutboundService {
@UserAction("'撤回销售出库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result withdraw(DocumentStatusUpdate vo, UserVo user) {
public Result withdraw(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("撤回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.WITHDRAW.getCode())
.uid(user.getId())
@ -142,17 +155,26 @@ public class BizSellOutboundService {
@UserAction("'通过销售出库单'+#vo.id")
@Lock({"#vo.pid", "#vo.id"})
@Transactional(rollbackFor = Exception.class)
public Result pass(DocumentStatusUpdate vo, UserVo user) {
public Result pass(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
String pid = vo.getPid();
long now = System.currentTimeMillis();
List<BizSellOutboundSub> subList = this.getSubById(vo.getId());
List<BizSellOutboundSub> subList = getSubById(vo.getId());
String err = check(vo.getPid(), subList);
if (err != null) return Result.fail("通过失败," + err);
if (mainMapper.pass(id, user.getId(), user.getName(), now) < 1) {
if (1 > mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getStatus, DocStatusEnum.VERIFIED.getCode())
.set(BizSellOutbound::getVid, user.getId())
.set(BizSellOutbound::getVname, user.getName())
.set(BizSellOutbound::getVtime, now)
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
)) {
return Result.fail("通过失败,请刷新重试");
}
@ -171,7 +193,7 @@ public class BizSellOutboundService {
//更新销售订单子表的剩余未出库数量,记录销售订单的完成情况
DocFinishEnum finish = DocFinishEnum.FINISHED;
List<BizSellOrderSub> orderSubList = orderMapper.getSubById(pid);
List<BizSellOrderSub> orderSubList = getOrderSubListByPid(pid);
for (BizSellOrderSub orderSub : orderSubList) {
if (orderSub.getRemainNum().equals(BigDecimal.ZERO)) {
@ -189,16 +211,29 @@ public class BizSellOutboundService {
finish = DocFinishEnum.UNDERWAY;
}
orderMapper.updateSubRemainNum(orderSub.getId(), gap);
//更新采购订单子表的remainNum
orderSubMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrderSub.class)
.set(BizSellOrderSub::getRemainNum, gap)
.eq(BizSellOrderSub::getId, orderSub.getId())
);
}
//更新销售订单完成情况
if (1 > orderMapper.updateFinish(pid, finish.getCode(), finish == DocFinishEnum.FINISHED ? now : null)) {
if (1 > orderMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOrder.class)
.set(BizSellOrder::getFinish, finish.getCode())
.set(BizSellOrder::getFtime, finish == DocFinishEnum.FINISHED ? now : null)
.eq(BizSellOrder::getId, pid)
.eq(BizSellOrder::getStatus, DocStatusEnum.VERIFIED.getCode())
)) {
throw new JsonResultException("通过失败,销售订单状态有误,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.PASS.getCode())
.uid(user.getId())
@ -216,16 +251,16 @@ public class BizSellOutboundService {
@UserAction("'驳回销售出库单'+#vo.id")
@Lock("#vo.id")
@Transactional(rollbackFor = Exception.class)
public Result reject(DocumentStatusUpdate vo, UserVo user) {
public Result reject(DocStatusUpdate vo, UserVo user) {
String id = vo.getId();
String info = vo.getInfo();
if (mainMapper.reject(id) < 1) {
if (rejectById(id) < 1) {
return Result.fail("驳回失败,请刷新重试");
}
historyMapper.insert(
BizDocumentHistory.builder()
BizDocHistory.builder()
.pid(id)
.type(DocHistoryEnum.REJECT.getCode())
.uid(user.getId())
@ -244,24 +279,24 @@ public class BizSellOutboundService {
@Lock("#id")
@Transactional(rollbackFor = Exception.class)
public Result del(String id) {
if (mainMapper.del(id) < 1) {
if (mainMapper.deleteById(id) < 1) {
return Result.fail("删除失败");
}
//同时删除子表和附件
mainMapper.delSubByPid(id);
delSubByPid(id);
recService.delAttachmentByPid(id);
return Result.success("删除成功");
}
private Result addMain(BizSellOutbound doc) {
private Result addMain(SellOutboundVo doc) {
List<BizSellOutboundSub> subList = doc.getData();
String err = check(doc.getPid(), subList);
if (err != null) return Result.fail(err);
String id = DocumentUtil.getDocumentID("XSCK");
String id = DocUtil.getDocId("XSCK");
if (StringUtils.isEmpty(id)) {
return Result.fail("获取单号失败");
@ -269,10 +304,11 @@ public class BizSellOutboundService {
doc.setId(id);
//设置子表的pid
subList.forEach(sub -> sub.setPid(id));
mainMapper.insert(doc);
mainMapper.addSub(subList);
subMapper.insertBatch(subList);
//插入附件
List<RecAttachment> uploadImageList = doc.getUploadImageList();
@ -286,17 +322,30 @@ public class BizSellOutboundService {
return Result.success("添加成功", id);
}
private Result updateMain(BizSellOutbound doc) {
private Result updateMain(SellOutboundVo doc) {
String docId = doc.getId();
String err = checkUpdateStatus(docId);
if (err == null) err = check(doc.getPid(), doc.getData());
if (err != null) return Result.fail(err);
mainMapper.update(doc);
mainMapper.delSubByPid(docId);
mainMapper.addSub(doc.getData());
//更新主表
mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getPid, doc.getPid())
.set(BizSellOutbound::getStatus, doc.getStatus())
.set(BizSellOutbound::getRemark, doc.getRemark())
.eq(BizSellOutbound::getId, docId)
);
//删除旧的子表
delSubByPid(docId);
//插入新的子表
subMapper.insertBatch(doc.getData());
//附件增删
List<RecAttachment> uploadImageList = doc.getUploadImageList();
Long time = System.currentTimeMillis();
for (RecAttachment attachment : uploadImageList) {
@ -310,7 +359,7 @@ public class BizSellOutboundService {
//只有拟定状态的单据才能修改
private String checkUpdateStatus(String id) {
BizSellOutbound doc = mainMapper.getById(id);
BizSellOutbound doc = mainMapper.selectById(id);
if (doc == null || !doc.getStatus().equals(DocStatusEnum.DRAFT.getCode())) {
return "单据状态已更新,请刷新后重试";
}
@ -319,7 +368,7 @@ public class BizSellOutboundService {
//添加、修改、通过前都需要检查
private String check(String pid, List<BizSellOutboundSub> docSubList) {
BizSellOrder order = orderMapper.getById(pid);
BizSellOrder order = orderMapper.selectById(pid);
//检查销售订单是否已审核、未完成
if (order == null
@ -329,14 +378,14 @@ public class BizSellOutboundService {
return "销售订单状态异常";
}
List<BizSellOrderSub> orderSubList = orderMapper.getSubById(pid);
List<BizSellOrderSub> orderSubList = getOrderSubListByPid(pid);
if (CollectionUtils.isEmpty(orderSubList)) {
return "没有找到销售订单的数据";
}
//按分类统计商品的出库数量
Map<Integer, BigDecimal> outboundCount = this.getOutboundCount(docSubList);
Map<Integer, BigDecimal> outboundCount = getOutboundCount(docSubList);
String[] cids = new String[outboundCount.size()];
@ -370,6 +419,41 @@ public class BizSellOutboundService {
return null;
}
//根据主表ID删除子表
private void delSubByPid(String pid) {
subMapper.delete(
Wrappers.lambdaQuery(BizSellOutboundSub.class)
.eq(BizSellOutboundSub::getPid, pid)
);
}
//驳回单据,只有等待审核单据的才能被驳回
private int rejectById(String id) {
return mainMapper.update(
null,
Wrappers.lambdaUpdate(BizSellOutbound.class)
.set(BizSellOutbound::getStatus, DocStatusEnum.DRAFT.getCode())
.eq(BizSellOutbound::getId, id)
.eq(BizSellOutbound::getStatus, DocStatusEnum.WAIT_VERIFY.getCode())
);
}
private List<BizSellOrderSub> getOrderSubListByPid(String pid) {
return orderSubMapper.selectList(
Wrappers.lambdaQuery(BizSellOrderSub.class)
.eq(BizSellOrderSub::getPid, pid)
);
}
private Wrapper<BizSellOutbound> getSearchCondition(SellOutboundSearch vo) {
String pid = vo.getPid();
String pidFuzzy = vo.getPidFuzzy();
return DocUtil.baseCondition(BizSellOutbound.class, vo)
.eq(pid != null, BizSellOutbound::getPid, pid)
.like(!StringUtils.isEmpty(pidFuzzy), BizSellOutbound::getPid, pidFuzzy);
}
private Map<Integer, BigDecimal> getOutboundCount(List<BizSellOutboundSub> list) {
if (CollectionUtils.isEmpty(list)) {
return new HashMap<>();

@ -1,19 +1,18 @@
package cn.toesbieya.jxc.service;
package cn.toesbieya.jxc.service.msg;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.constant.MsgConstant;
import cn.toesbieya.jxc.constant.SocketConstant;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.SocketEventVo;
import cn.toesbieya.jxc.model.vo.UserVo;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import cn.toesbieya.jxc.model.vo.search.MsgSearch;
import cn.toesbieya.jxc.utils.WebSocketUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.model.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@ -27,23 +26,49 @@ import java.util.stream.Collectors;
@Slf4j
public class MsgService {
@Resource
private MsgMapper msgMapper;
private MsgMapper mapper;
public PageResult<Msg> search(MsgSearch vo) {
String title = vo.getTitle();
String type = vo.getType();
String status = vo.getStatus();
Wrapper<Msg> wrapper =
Wrappers.lambdaQuery(Msg.class)
.like(!StringUtils.isEmpty(title), Msg::getTitle, title)
.inSql(!StringUtils.isEmpty(type), Msg::getType, type)
.inSql(!StringUtils.isEmpty(status), Msg::getStatus, status)
.orderByDesc(Msg::getId);
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<Msg> list = msgMapper.search(vo);
return new PageResult<>(list);
return new PageResult<>(mapper.selectList(wrapper));
}
@UserAction("'添加消息:'+#msg.title")
public Result add(Msg msg) {
msgMapper.insert(msg);
mapper.insert(msg);
return Result.success("添加成功", msg);
}
@UserAction("'修改消息:'+#msg.title")
public Result update(Msg msg) {
int rows = msgMapper.update(msg);
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
.set(Msg::getTitle, msg.getTitle())
.set(Msg::getContent, msg.getContent())
.set(Msg::getType, msg.getType())
.set(Msg::getPid, msg.getPid())
.set(Msg::getPname, msg.getPname())
.set(Msg::getPtime, msg.getPtime())
.set(Msg::getWid, msg.getWid())
.set(Msg::getWname, msg.getWname())
.set(Msg::getWtime, msg.getWtime())
.set(Msg::getStatus, msg.getStatus())
.set(Msg::getBroadcast, msg.getBroadcast())
.set(Msg::getRecipient, msg.getRecipient())
.eq(Msg::getId, msg.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新重试");
}
@ -59,6 +84,7 @@ public class MsgService {
SocketEventVo eventVo = new SocketEventVo();
eventVo.setEvent(SocketConstant.EVENT_NEW_MESSAGE);
//发送websocket消息
if (msg.getBroadcast().equals(MsgConstant.TO_ALL)) {
eventVo.setType(SocketConstant.REDIS_EVENT_BROADCAST);
WebSocketUtil.sendEvent(eventVo);
@ -82,51 +108,24 @@ public class MsgService {
return result;
}
@UserAction("'撤回消息:'+#msg.title")
public Result withdraw(Msg msg) {
int rows = msgMapper.withdraw(msg);
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(Msg.class)
.set(Msg::getStatus, msg.getStatus())
.set(Msg::getWid, msg.getWid())
.set(Msg::getWname, msg.getWname())
.set(Msg::getWtime, msg.getWtime())
.eq(Msg::getId, msg.getId())
.eq(Msg::getStatus, msg.getStatus())
);
return rows > 0 ? Result.success("撤回成功", msg) : Result.fail("撤回失败,请刷新重试");
}
public Result del(int id) {
int rows = msgMapper.del(id);
@UserAction("'删除消息:'+#title")
public Result del(int id, String title) {
int rows = mapper.deleteById(id);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新重试");
}
public PageResult<Msg> searchPersonal(MsgPersonalSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<Msg> list = vo.isUnread() ? msgMapper.getUnreadByUser(vo) : msgMapper.getReadByUser(vo);
return new PageResult<>(list);
}
public Result read(UserVo user, int id) {
if (msgMapper.checkRead(id, user.getId())) {
return Result.success();
}
MsgState state = new MsgState();
state.setMid(id);
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
return Result.success(msgMapper.insertState(state));
}
public Result readAll(UserVo user) {
MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
MsgState state = new MsgState();
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
List<Msg> list = msgMapper.getUnreadByUser(vo);
for (Msg msg : list) {
state.setMid(msg.getId());
msgMapper.insertState(state);
}
return Result.success();
}
}

@ -0,0 +1,71 @@
package cn.toesbieya.jxc.service.msg;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.mapper.MsgMapper;
import cn.toesbieya.jxc.mapper.MsgStateMapper;
import cn.toesbieya.jxc.model.entity.Msg;
import cn.toesbieya.jxc.model.entity.MsgState;
import cn.toesbieya.jxc.model.entity.SysUser;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.result.PageResult;
import cn.toesbieya.jxc.model.vo.search.MsgPersonalSearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class MsgUserService {
@Resource
private MsgMapper msgMapper;
@Resource
private MsgStateMapper msgStateMapper;
public PageResult<Msg> search(MsgPersonalSearch vo) {
PageHelper.startPage(vo.getPage(), vo.getPageSize());
List<Msg> list = vo.isUnread() ? msgMapper.getUnreadByUser(vo) : msgMapper.getReadByUser(vo);
return new PageResult<>(list);
}
public Result read(SysUser user, int id) {
//如果该消息已读,直接返回
if (!msgStateMapper
.selectCount(
Wrappers.lambdaQuery(MsgState.class)
.eq(MsgState::getId, id)
.eq(MsgState::getMid, user.getId())
)
.equals(0)) {
return Result.success();
}
MsgState state = new MsgState();
state.setMid(id);
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
return Result.success(msgStateMapper.insert(state));
}
@UserAction("'清空所有未读消息'")
public Result readAll(SysUser user) {
MsgPersonalSearch vo = new MsgPersonalSearch();
vo.setUid(user.getId());
vo.setCtime(user.getCtime());
MsgState state = new MsgState();
state.setUid(user.getId());
state.setTime(System.currentTimeMillis());
List<Msg> list = msgMapper.getUnreadByUser(vo);
for (Msg msg : list) {
state.setMid(msg.getId());
msgStateMapper.insert(state);
}
return Result.success();
}
}

@ -0,0 +1,121 @@
package cn.toesbieya.jxc.service.sys;
import cn.toesbieya.jxc.annoation.Lock;
import cn.toesbieya.jxc.annoation.UserAction;
import cn.toesbieya.jxc.mapper.SysCategoryMapper;
import cn.toesbieya.jxc.model.entity.SysCategory;
import cn.toesbieya.jxc.model.vo.Result;
import cn.toesbieya.jxc.model.vo.search.CategorySearch;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.List;
@Service
public class SysCategoryService {
@Resource
private SysCategoryMapper mapper;
public List<SysCategory> getAll() {
return mapper.selectList(null);
}
public List<SysCategory> search(CategorySearch vo) {
Integer id = vo.getId();
String ids = vo.getIds();
Integer pid = vo.getPid();
String pids = vo.getPids();
String name = vo.getName();
Integer type = vo.getType();
Long startTime = vo.getStartTime();
Long endTime = vo.getEndTime();
return mapper.selectList(
Wrappers.lambdaQuery(SysCategory.class)
.eq(id != null, SysCategory::getId, id)
.inSql(!StringUtils.isEmpty(ids), SysCategory::getId, ids)
.eq(pid != null, SysCategory::getPid, pid)
.inSql(!StringUtils.isEmpty(pids), SysCategory::getPid, pids)
.like(!StringUtils.isEmpty(name), SysCategory::getName, name)
.eq(type != null, SysCategory::getType, type)
.ge(startTime != null, SysCategory::getCtime, startTime)
.le(endTime != null, SysCategory::getCtime, endTime)
.orderByDesc(SysCategory::getCtime)
);
}
@UserAction("'添加分类:'+#category.name")
@Lock("'category'+#category.pid")
public Result add(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("添加失败," + err);
int rows = mapper.insert(category);
return rows > 0 ? Result.success("添加成功") : Result.fail("添加失败");
}
@UserAction("'修改分类:'+#category.name")
@Lock("'category'+#category.id")
public Result update(SysCategory category) {
String err = check(category);
if (err != null) return Result.fail("修改失败," + err);
int rows = mapper.update(
null,
Wrappers.lambdaUpdate(SysCategory.class)
.set(SysCategory::getPid, category.getPid())
.set(SysCategory::getName, category.getName())
.set(SysCategory::getType, category.getType())
.eq(SysCategory::getId, category.getId())
);
return rows > 0 ? Result.success("修改成功") : Result.fail("修改失败,请刷新后重试");
}
@UserAction("'删除分类:'+#category.name")
@Lock("'category'+#category.id")
public Result del(SysCategory category) {
Integer cid = category.getId();
if (hasChildren(cid)) {
return Result.fail("请先删除该分类下的子节点");
}
if (mapper.checkIsUse(cid)) {
return Result.fail("该分类已在业务中使用,不可删除");
}
int rows = mapper.deleteById(cid);
return rows > 0 ? Result.success("删除成功") : Result.fail("删除失败,请刷新后重试");
}
private String check(SysCategory category) {
//当该分类不是顶级节点时,判断其父节点是否允许有下级
if (!category.getPid().equals(0)) {
SysCategory parent = mapper.selectById(category.getPid());
if (parent == null || parent.getType().equals(1)) {
return "父节点状态变更,请刷新后重试";
}
}
Integer id = category.getId();
Integer exist = mapper.selectCount(
Wrappers.lambdaQuery(SysCategory.class)
.eq(SysCategory::getName, category.getName())
.ne(id != null, SysCategory::getId, id)
);
if (exist != null && exist > 0) {
return String.format("分类【%s】已存在", category.getName());
}
if (id != null && category.getType().equals(1) && hasChildren(id)) {
return "该分类下存在子节点,不能改为实体类型";
}
return null;
}
private boolean hasChildren(Integer id) {
Integer checkNum = mapper.selectCount(
Wrappers.lambdaQuery(SysCategory.class)
.eq(SysCategory::getPid, id)
);
return checkNum != null && checkNum > 0;
}
}

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

Loading…
Cancel
Save