From a80ce8bf5185e5d6eb216e48f7c19684bc915e16 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 9 Aug 2022 10:08:35 +0800 Subject: [PATCH] update --- .../qs/serve/common/config/MyBatisConfig.java | 2 +- .../qs/serve/common/model/enums/BizType.java | 3 + .../controller/AdminPortalController.java | 23 ++++ .../PmsCounterSubmitController.java | 49 ++++++- .../PmsProductProcessController.java | 126 +++++++++++++++--- .../modules/pms/entity/PmsCounterSubmit.java | 12 ++ .../modules/pms/entity/PmsCounterType.java | 3 +- .../modules/pms/entity/PmsProductProcess.java | 15 ++- .../pms/entity/dto/PmsProcessReaBatch.java | 24 ++++ .../pms/entity/dto/PmsProductReaBatch.java | 27 ++++ 10 files changed, 259 insertions(+), 25 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java create mode 100644 src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java diff --git a/src/main/java/com/qs/serve/common/config/MyBatisConfig.java b/src/main/java/com/qs/serve/common/config/MyBatisConfig.java index deebb82..a8f4eb6 100644 --- a/src/main/java/com/qs/serve/common/config/MyBatisConfig.java +++ b/src/main/java/com/qs/serve/common/config/MyBatisConfig.java @@ -26,7 +26,7 @@ public class MyBatisConfig { // 翻页拦截器 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 多租户、乐观锁等配置拦截 - interceptor.addInnerInterceptor(buildTenantHandler()); + //interceptor.addInnerInterceptor(buildTenantHandler()); // 添加防止全表更新与删除拦截器 interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor()); return interceptor; diff --git a/src/main/java/com/qs/serve/common/model/enums/BizType.java b/src/main/java/com/qs/serve/common/model/enums/BizType.java index 278c635..6c9ea22 100644 --- a/src/main/java/com/qs/serve/common/model/enums/BizType.java +++ b/src/main/java/com/qs/serve/common/model/enums/BizType.java @@ -20,6 +20,9 @@ public enum BizType { /** 修改 */ UPDATE("修改"), + /** 审核 */ + CHECK("审核"), + /** 删除 */ DELETE("删除"), diff --git a/src/main/java/com/qs/serve/controller/AdminPortalController.java b/src/main/java/com/qs/serve/controller/AdminPortalController.java index 393fde0..bd69945 100644 --- a/src/main/java/com/qs/serve/controller/AdminPortalController.java +++ b/src/main/java/com/qs/serve/controller/AdminPortalController.java @@ -7,6 +7,7 @@ import com.qs.serve.common.model.annotation.LimitSubmit; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.dto.SimpleKeyValue; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.IdUtil; @@ -24,7 +25,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; /** @@ -135,5 +139,24 @@ public class AdminPortalController { return R.ok(); } + /** + * 获取系统模块(用于系统日志) + * @return + */ + @GetMapping("/getSysLogOption") + public R getModule(){ + List> moduleList = new ArrayList<>(); + for (SystemModule systemModule : SystemModule.values()) { + moduleList.add(new SimpleKeyValue<>(systemModule.getVale(),systemModule.getVale(),null)); + } + List> optionList = new ArrayList<>(); + for (BizType obj : BizType.values()) { + optionList.add(new SimpleKeyValue<>(obj.getValue(),obj.getValue(),null)); + } + Map result = new HashMap<>(); + result.put("moduleList",moduleList); + result.put("bizList",optionList); + return R.ok(result); + } } diff --git a/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java b/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java index 7e9bb34..af86c7c 100644 --- a/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java +++ b/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java @@ -1,11 +1,13 @@ package com.qs.serve.modules.pms.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.framework.security.model.LoginUser; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.pms.entity.PmsCounterSubmit; import com.qs.serve.modules.pms.service.PmsCounterSubmitService; @@ -15,6 +17,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.time.LocalDateTime; import java.util.List; /** @@ -40,6 +43,12 @@ public class PmsCounterSubmitController { public R> getPage(PmsCounterSubmit param){ PageUtil.startPage(); LambdaQueryWrapper counterSubmitWrapper = new LambdaQueryWrapper<>(param); + if(param.getQueryStartTime()!=null){ + counterSubmitWrapper.ge(PmsCounterSubmit::getCreateTime,param.getQueryStartTime()); + } + if(param.getQueryEndTime()!=null){ + counterSubmitWrapper.le(PmsCounterSubmit::getCreateTime,param.getQueryEndTime()); + } List list = pmsCounterSubmitService.list(counterSubmitWrapper); return R.byPageHelperList(list); } @@ -57,7 +66,27 @@ public class PmsCounterSubmitController { return R.ok(pmsCounterSubmit); } - + /** + * 根据ID更新 + * @param param id,checkerRemark,checkStatus + * @return + */ + @PostMapping("/check") + @SysLog(module = SystemModule.PIECE, title = "计时报工单", biz = BizType.CHECK) + @PreAuthorize("hasRole('pms:counterSubmit:check')") + public R check(@RequestBody PmsCounterSubmit param){ + LoginUser loginUser = AuthContextUtils.getLoginUser(); + PmsCounterSubmit pmsCounterSubmit = new PmsCounterSubmit(); + pmsCounterSubmit.setId(param.getId()); + pmsCounterSubmit.setCheckerTime(LocalDateTime.now()); + pmsCounterSubmit.setCheckerId(loginUser.getUserId()); + pmsCounterSubmit.setCheckerCode(loginUser.getUsername()); + pmsCounterSubmit.setCheckerName(loginUser.getNick()); + pmsCounterSubmit.setCheckerRemark(param.getCheckerRemark()); + pmsCounterSubmit.setCheckStatus(param.getCheckStatus()); + pmsCounterSubmitService.updateById(pmsCounterSubmit); + return R.ok(); + } /** * 根据ID更新 @@ -85,6 +114,24 @@ public class PmsCounterSubmitController { return R.isTrue(result); } + /** + * 新增计时报工单(个人) + * @param pmsCounterSubmit + * @return + */ + @PostMapping("/selfSave") + @SysLog(module = SystemModule.PIECE, title = "计时报工单",desc = "个人添加计时报工单", biz = BizType.INSERT) + public R selfSave(@RequestBody @Valid PmsCounterSubmit pmsCounterSubmit){ + LoginUser loginUser = AuthContextUtils.getLoginUser(); + pmsCounterSubmit.setId(null); + pmsCounterSubmit.setCreateTime(LocalDateTime.now()); + pmsCounterSubmit.setPersonId(loginUser.getUserId()); + pmsCounterSubmit.setPersonCode(loginUser.getUsername()); + pmsCounterSubmit.setPersonName(loginUser.getNick()); + boolean result = pmsCounterSubmitService.save(pmsCounterSubmit); + return R.isTrue(result); + } + /** * 删除计时报工单 * @param id diff --git a/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java b/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java index 7626262..54d6bed 100644 --- a/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java +++ b/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java @@ -1,25 +1,35 @@ package com.qs.serve.modules.pms.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.framework.mybatis.join.JoinUtil; import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; +import com.qs.serve.modules.pms.entity.PmsProcess; +import com.qs.serve.modules.pms.entity.PmsProduct; +import com.qs.serve.modules.pms.entity.dto.PmsProcessReaBatch; +import com.qs.serve.modules.pms.entity.dto.PmsProductReaBatch; +import com.qs.serve.modules.pms.service.PmsProcessService; +import com.qs.serve.modules.pms.service.PmsProductService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import com.qs.serve.modules.pms.entity.PmsProductProcess; import com.qs.serve.modules.pms.service.PmsProductProcessService; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** - * 生产计件 产品工序 + * 生产计件 产品工序关联 * @author YenHex * @since 2022-08-05 */ @@ -30,6 +40,8 @@ import java.util.List; public class PmsProductProcessController { private PmsProductProcessService pmsProductProcessService; + private PmsProductService pmsProductService; + private PmsProcessService pmsProcessService; /** * 翻页查询 @@ -42,35 +54,94 @@ public class PmsProductProcessController { PageUtil.startPage(); LambdaQueryWrapper productProcessWrapper = new LambdaQueryWrapper<>(param); List list = pmsProductProcessService.list(productProcessWrapper); + JoinUtil.relate(list); return R.byPageHelperList(list); } /** - * 根据ID查询 - * @param id + * 翻页查询 + * @param param * @return */ - @GetMapping("/getById/{id}") - @SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.QUERY) + @GetMapping("/list") @PreAuthorize("hasRole('pms:productProcess:query')") - public R getById(@PathVariable("id") String id){ - PmsProductProcess pmsProductProcess = pmsProductProcessService.getById(id); - return R.ok(pmsProductProcess); + public R> getList(PmsProductProcess param){ + LambdaQueryWrapper productProcessWrapper = new LambdaQueryWrapper<>(param); + List list = pmsProductProcessService.list(productProcessWrapper); + JoinUtil.relate(list); + return R.ok(list); } - + /** + * 产品批量关联工序 + * @param param + * @return + */ + @PostMapping("/editBatchProductRea") + @SysLog(module = SystemModule.PIECE, title = "产品工序关联",desc = "产品批量关联工序", biz = BizType.UPDATE) + @PreAuthorize("hasRole('pms:productProcess:edit')") + @Transactional(rollbackFor = Exception.class) + public R editBatchProductRea(@RequestBody @Valid PmsProductReaBatch param){ + String productId = param.getProductId(); + List paramProcessIdList = param.getProcessIdList(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(PmsProductProcess::getProductId,productId); + if(param.getProcessIdList().size() < 1){ + pmsProductProcessService.remove(lqw); + return R.ok(); + } + List list = pmsProductProcessService.list(lqw); + List dbProcessIds = list.stream().map(PmsProductProcess::getProcessId).collect(Collectors.toList()); + List nwProcessIds = paramProcessIdList.stream().filter(pid->!dbProcessIds.contains(pid)).collect(Collectors.toList()); + List rmProcessIds = dbProcessIds.stream().filter(pid->!paramProcessIdList.contains(pid)).collect(Collectors.toList()); + LambdaQueryWrapper rmlqw = new LambdaQueryWrapper<>(); + rmlqw.eq(PmsProductProcess::getProductId,productId); + rmlqw.in(PmsProductProcess::getProcessId,rmProcessIds); + pmsProductProcessService.remove(rmlqw); + List newList = nwProcessIds.stream().map(procId->{ + PmsProductProcess ppp = new PmsProductProcess(); + ppp.setProductId(productId); + ppp.setProcessId(procId); + return ppp; + }).collect(Collectors.toList()); + pmsProductProcessService.saveBatch(newList); + return R.error(); + } /** - * 根据ID更新 + * 产品批量关联工序 * @param param * @return */ - @PostMapping("/updateById") - @SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.UPDATE) - @PreAuthorize("hasRole('pms:productProcess:update')") - public R updateById(@RequestBody @Valid PmsProductProcess param){ - boolean result = pmsProductProcessService.updateById(param); - return R.isTrue(result); + @PostMapping("/editBatchProcessRea") + @SysLog(module = SystemModule.PIECE, title = "产品工序关联",desc = "产品批量关联工序", biz = BizType.UPDATE) + @PreAuthorize("hasRole('pms:productProcess:edit')") + @Transactional(rollbackFor = Exception.class) + public R editBatchProcessRea(@RequestBody @Valid PmsProcessReaBatch param){ + String processId = param.getProcessId(); + List paramProductIdList = param.getProductIdList(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(PmsProductProcess::getProcessId,processId); + if(param.getProductIdList().size() < 1){ + pmsProductProcessService.remove(lqw); + return R.ok(); + } + List list = pmsProductProcessService.list(lqw); + List dbProductIds = list.stream().map(PmsProductProcess::getProductId).collect(Collectors.toList()); + List nwProductIds = paramProductIdList.stream().filter(pid->!dbProductIds.contains(pid)).collect(Collectors.toList()); + List rmProductIds = dbProductIds.stream().filter(pid->!paramProductIdList.contains(pid)).collect(Collectors.toList()); + LambdaQueryWrapper rmlqw = new LambdaQueryWrapper<>(); + rmlqw.eq(PmsProductProcess::getProcessId,processId); + rmlqw.in(PmsProductProcess::getProductId,rmProductIds); + pmsProductProcessService.remove(rmlqw); + List newList = nwProductIds.stream().map(prodId->{ + PmsProductProcess ppp = new PmsProductProcess(); + ppp.setProductId(prodId); + ppp.setProcessId(processId); + return ppp; + }).collect(Collectors.toList()); + pmsProductProcessService.saveBatch(newList); + return R.error(); } /** @@ -79,21 +150,34 @@ public class PmsProductProcessController { * @return */ @PostMapping("/save") - @SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.INSERT) - @PreAuthorize("hasRole('pms:productProcess:insert')") + @SysLog(module = SystemModule.PIECE, title = "产品工序关联", biz = BizType.UPDATE) + @PreAuthorize("hasRole('pms:productProcess:edit')") public R save(@RequestBody @Valid PmsProductProcess param){ boolean result = pmsProductProcessService.save(param); return R.isTrue(result); } /** - * 删除产品工序 + * 根据ID更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.PIECE, title = "产品工序关联", biz = BizType.UPDATE) + @PreAuthorize("hasRole('pms:productProcess:edit')") + public R updateById(@RequestBody @Valid PmsProductProcess param){ + boolean result = pmsProductProcessService.updateById(param); + return R.isTrue(result); + } + + /** + * 删除产品工序关联 * @param id * @return */ @DeleteMapping("/deleteById/{id}") - @SysLog(module = SystemModule.PIECE, title = "产品工序", biz = BizType.DELETE) - @PreAuthorize("hasRole('pms:productProcess:delete')") + @SysLog(module = SystemModule.PIECE, title = "产品工序关联", biz = BizType.DELETE) + @PreAuthorize("hasRole('pms:productProcess:edit')") public R deleteById(@PathVariable("id") String id){ boolean result = pmsProductProcessService.removeById(id); return R.isTrue(result); diff --git a/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterSubmit.java b/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterSubmit.java index 3afe663..34d1084 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterSubmit.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterSubmit.java @@ -66,6 +66,10 @@ public class PmsCounterSubmit implements Serializable { @Length(max = 255,message = "员工填写的备注长度不能超过255字") private String personRemark; + /** 核对状态 */ + @Length(max = 32,message = "核对员id长度不能超过32字") + private Integer checkStatus; + /** 核对员id */ @Length(max = 32,message = "核对员id长度不能超过32字") private String checkerId; @@ -121,5 +125,13 @@ public class PmsCounterSubmit implements Serializable { @JsonProperty private Boolean delFlag; + /** 查询:开始时间 */ + @TableField(exist = false) + private LocalDateTime queryStartTime; + + /** 查询:结束时间 */ + @TableField(exist = false) + private LocalDateTime queryEndTime; + } diff --git a/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterType.java b/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterType.java index 8bafca9..b369d99 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterType.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/PmsCounterType.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.pms.entity; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.io.Serializable; @@ -42,7 +43,7 @@ public class PmsCounterType implements Serializable { /** 工量单价 */ @NotBlank(message = "工量单价不能为空") @Length(max = 20,message = "工量单价长度不能超过20字") - private String price; + private BigDecimal price; /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") diff --git a/src/main/java/com/qs/serve/modules/pms/entity/PmsProductProcess.java b/src/main/java/com/qs/serve/modules/pms/entity/PmsProductProcess.java index 6e5f6ab..e5fab85 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/PmsProductProcess.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/PmsProductProcess.java @@ -8,6 +8,9 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import com.qs.serve.common.framework.mybatis.join.annotations.BindEntity; +import com.qs.serve.modules.pms.service.PmsProcessService; +import com.qs.serve.modules.pms.service.PmsProductService; import lombok.Data; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; @@ -30,7 +33,7 @@ public class PmsProductProcess implements Serializable { @TableId(type = IdType.ASSIGN_UUID) private String id; - /** 商品id */ + /** 产品id */ @NotBlank(message = "商品id不能为空") @Length(max = 32,message = "商品id长度不能超过32字") private String productId; @@ -73,5 +76,15 @@ public class PmsProductProcess implements Serializable { @JsonProperty private Boolean delFlag; + /** 产品信息 */ + @BindEntity(service = PmsProductService.class,joinField = "productId") + @TableField(exist = false) + private Object productInfo; + + /** 工序信息 */ + @BindEntity(service = PmsProcessService.class,joinField = "processId") + @TableField(exist = false) + private Object processInfo; + } diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java new file mode 100644 index 0000000..e027b73 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java @@ -0,0 +1,24 @@ +package com.qs.serve.modules.pms.entity.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @author YenHex + * @since 2022/8/8 + */ +@Data +public class PmsProcessReaBatch { + + /** + * 工序ID + */ + private String processId; + + /** + * 产品ID集合 + */ + private List productIdList; + +} diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java new file mode 100644 index 0000000..158dddb --- /dev/null +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java @@ -0,0 +1,27 @@ +package com.qs.serve.modules.pms.entity.dto; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @author YenHex + * @since 2022/8/8 + */ +@Data +public class PmsProductReaBatch { + + /** + * 产品ID + */ + @NotNull(message = "请选择产品") + private String productId; + + /** + * 工序ID集合 + */ + @NotNull(message = "请选择工序") + private List processIdList; + +}