From 5984d5a9d7c1e5a3fb715e2a815a263a1bd3001f Mon Sep 17 00:00:00 2001 From: YuanFeng <770153798@qq.com> Date: Tue, 19 Nov 2024 23:25:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=93=81=E7=89=8C=E8=B7=9F=E5=8D=95=E5=91=98=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BA=A7=E5=93=81=E8=B5=84=E6=96=99=E5=A4=8D=E5=88=B6?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../saleorder/SaleOrderServiceImpl.java | 312 ++++++++++-------- .../service/user/AdminUserServiceImpl.java | 14 +- .../views/oms/productinfo/ProductInfoForm.vue | 156 +++++---- .../src/views/oms/productinfo/index.vue | 12 +- .../src/ProductInfoListDialog/config.data.ts | 1 + .../components/ProductInfoList/config.data.ts | 1 + 6 files changed, 282 insertions(+), 214 deletions(-) diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java index 528615d..b20a9e0 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderServiceImpl.java @@ -4,6 +4,7 @@ import cn.hangtag.framework.common.exception.ServiceException; import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.hangtag.framework.common.pojo.PageResult; import cn.hangtag.framework.common.util.FuncUtil; +import cn.hangtag.framework.common.util.cache.CacheUtils; import cn.hangtag.framework.common.util.object.BeanUtils; import cn.hangtag.framework.common.util.validation.AssertUtil; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; @@ -50,7 +51,9 @@ import cn.hangtag.module.oms.service.product.ProductPriceService; import cn.hangtag.module.oms.service.productinfo.ProductInfoService; import cn.hangtag.module.oms.service.salecontract.SaleContractService; import cn.hangtag.module.oms.service.saleordersku.SaleOrderSkuService; +import cn.hangtag.module.system.dal.dataobject.brand.UserBrandDO; import cn.hangtag.module.system.dal.dataobject.user.AdminUserDO; +import cn.hangtag.module.system.dal.mysql.brand.UserBrandMapper; import cn.hangtag.module.system.mq.message.mail.MailSendMessage; import cn.hangtag.module.system.service.mail.MailSendService; import cn.hangtag.module.system.service.user.AdminUserService; @@ -125,6 +128,8 @@ public class SaleOrderServiceImpl implements SaleOrderService { @Resource private CustomerMapper customerMapper; @Resource + private UserBrandMapper userBrandMapper; + @Resource private ProductPriceService productPriceService; @Resource @@ -196,7 +201,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { private void validateSaleOrderStatus(Long id) { SaleOrderDO saleOrderDO = saleOrderMapper.selectById(id); if (saleOrderDO == null) { - if(BillStatusEnum.AUDIT.getValue().equals(saleOrderDO.getBillStatus())){ + if (BillStatusEnum.AUDIT.getValue().equals(saleOrderDO.getBillStatus())) { throw exception(SALE_ORDER_NOT_DELETE); } } @@ -220,9 +225,9 @@ public class SaleOrderServiceImpl implements SaleOrderService { List entrys = saleOrderEntryMapper.selectListByParentId(parentId); for (cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO entry : entrys) { BigDecimal price = entry.getPrice(); - if(price==null){ + if (price == null) { ProductPriceDO productPrice = productPriceService.getProductPriceByProductId(entry.getParentId()); - if(productPrice!=null){ + if (productPrice != null) { entry.setPrice(productPrice.getPrice()); } } @@ -236,13 +241,13 @@ public class SaleOrderServiceImpl implements SaleOrderService { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(SaleOrderDO::getBillStatus, BillStatusEnum.SUBMIT.getValue()); - if(customerId!=null){ + if (customerId != null) { lambdaQueryWrapper.eq(SaleOrderDO::getCustomerId, customerId); } LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); lambdaQueryWrapper1.eq(SaleOrderDO::getBillStatus, BillStatusEnum.AUDIT.getValue()); - if(customerId!=null){ + if (customerId != null) { lambdaQueryWrapper1.eq(SaleOrderDO::getCustomerId, customerId); } @@ -262,67 +267,69 @@ public class SaleOrderServiceImpl implements SaleOrderService { counts.put(BillStatusEnum.YPLAN.getValue(), 0L); return counts; } + @Override @Transactional(rollbackFor = Exception.class) - public void updateSaleOrderBillStatus(List ids, String status){ - updateSaleOrderBillStatus(ids,status,null); + public void updateSaleOrderBillStatus(List ids, String status) { + updateSaleOrderBillStatus(ids, status, null); } + @Override @Transactional(rollbackFor = Exception.class) - public void updateSaleOrderBillStatus(List ids, String status,Map params){ + public void updateSaleOrderBillStatus(List ids, String status, Map params) { List saleOrders = saleOrderMapper.selectList(SaleOrderDO::getId, ids); - switch (status){ + switch (status) { case "invalid": //作废 for (SaleOrderDO saleOrder : saleOrders) { - if(!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus())){ + if (!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus())) { saleOrder.setBillStatus(BillStatusEnum.INVALID.getValue()); saleOrder.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); saleOrderMapper.updateById(saleOrder); - }else{ - if(StringUtils.equalsAny(saleOrder.getBillStatus(),BillStatusEnum.AUDIT.getValue(),BillStatusEnum.YPLAN.getValue())){ - throw new ServiceException(001,"订单状态已审核/已排产,不允许作废!"); - }else{ - throw new ServiceException(001,"只允许提交驳回订单!"); + } else { + if (StringUtils.equalsAny(saleOrder.getBillStatus(), BillStatusEnum.AUDIT.getValue(), BillStatusEnum.YPLAN.getValue())) { + throw new ServiceException(001, "订单状态已审核/已排产,不允许作废!"); + } else { + throw new ServiceException(001, "只允许提交驳回订单!"); } } } break; case "reject": //驳回 for (SaleOrderDO saleOrder : saleOrders) { - if(!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus()) && (params!=null && params.size()>0)){ + if (!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus()) && (params != null && params.size() > 0)) { saleOrder.setBillStatus(BillStatusEnum.REJECT.getValue()); saleOrder.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); - saleOrder.setRejectReason((String)params.get("rejectReason")); + saleOrder.setRejectReason((String) params.get("rejectReason")); saleOrderMapper.updateById(saleOrder); } } break; case "submit": //提交 for (SaleOrderDO saleOrder : saleOrders) { - if(BillStatusEnum.REJECT.getValue().equals(saleOrder.getBillStatus())){ + if (BillStatusEnum.REJECT.getValue().equals(saleOrder.getBillStatus())) { saleOrder.setBillStatus(BillStatusEnum.SUBMIT.getValue()); saleOrder.setOrderStatus(SaleOrderStatusEnum.SCZ.getValue()); saleOrderMapper.updateById(saleOrder); - }else { - if(BillStatusEnum.INVALID.getValue().equals(saleOrder.getBillStatus())){ - throw new ServiceException(001,"订单状态已作废,不允许提交!"); - }else{ - throw new ServiceException(001,"只允许提交驳回订单!"); + } else { + if (BillStatusEnum.INVALID.getValue().equals(saleOrder.getBillStatus())) { + throw new ServiceException(001, "订单状态已作废,不允许提交!"); + } else { + throw new ServiceException(001, "只允许提交驳回订单!"); } } } break; case "audit": //审核 for (SaleOrderDO saleOrder : saleOrders) { - if(BillStatusEnum.SUBMIT.getValue().equals(saleOrder.getBillStatus())){ + if (BillStatusEnum.SUBMIT.getValue().equals(saleOrder.getBillStatus())) { List entrys = getSaleOrderEntryListByParentId(saleOrder.getId()); - if(entrys==null||entrys.isEmpty()){ - throw new ServiceException(001,"产品明细为空"); + if (entrys == null || entrys.isEmpty()) { + throw new ServiceException(001, "产品明细为空"); } for (SaleOrderEntryDO entry : entrys) { BigDecimal price = entry.getPrice(); - if(price==null){ + if (price == null) { throw new ServiceException(ErrorCodeConstants.SALE_ORDER_ENTRY_PRICE_NOT_NULL); } } @@ -339,65 +346,65 @@ public class SaleOrderServiceImpl implements SaleOrderService { for (SaleOrderEntryDO entry : entrys) { Long parentId = entry.getParentId(); BigDecimal price = entry.getPrice(); - generateProductPrice(parentId,price); + generateProductPrice(parentId, price); } //生成销售合约 - Long saleContractId = generateSaleContract(saleOrder,entrys); + Long saleContractId = generateSaleContract(saleOrder, entrys); String htmlContent = generateHtmlContent(saleContractId); //docker生成路径 String pathUrl = System.getProperty("user.dir") + "/pdffile"; - String fileName = StrUtil.format(pathUrl+"/SaleContract_{}", saleOrder.getBillno()); + String fileName = StrUtil.format(pathUrl + "/SaleContract_{}", saleOrder.getBillno()); //主宿机生成路径 - String fileName2 = StrUtil.format(pdfPath+"/SaleContract_{}", saleOrder.getBillno()); + String fileName2 = StrUtil.format(pdfPath + "/SaleContract_{}", saleOrder.getBillno()); String templatePath = fileName + ".html"; String pdfPath = fileName + ".pdf"; String templatePath2 = fileName2 + ".html"; String pdfPath2 = fileName2 + ".pdf"; - FileUtil.writeString(htmlContent,templatePath, "UTF-8"); + FileUtil.writeString(htmlContent, templatePath, "UTF-8"); - log.info("已生成HTML文件:"+templatePath); + log.info("已生成HTML文件:" + templatePath); //请求wkapp JSONObject params2 = new JSONObject(); - params2.put("input_html_path","file://"+templatePath2); - params2.put("output_pdf_path",pdfPath2); - log.info("请求wkapp接口url:"+wkappUrl+"/exehtmltopdf"); + params2.put("input_html_path", "file://" + templatePath2); + params2.put("output_pdf_path", pdfPath2); + log.info("请求wkapp接口url:" + wkappUrl + "/exehtmltopdf"); String result = HttpUtil.post(wkappUrl + "/exehtmltopdf", params2, 5 * 60 * 1000); - log.info("请求wkapp接口返回结果:"+result); + log.info("请求wkapp接口返回结果:" + result); //发送消息 String emails = saleOrder.getEmails(); - if(StringUtils.isNotBlank(emails)){ + if (StringUtils.isNotBlank(emails)) { MailSendMessage message = new MailSendMessage(); message.setAccountId(1L); message.setMail(emails); message.setTitle("OMS订单系统"); - message.setContent("您好,您的订单:"+saleOrder.getBillno()+",已审核通过!"); + message.setContent("您好,您的订单:" + saleOrder.getBillno() + ",已审核通过!"); mailSendService.doSendMail(message); } String orderFollowerUser = saleOrder.getOrderFollowerUser(); - if(StringUtils.isNotBlank(orderFollowerUser)){ + if (StringUtils.isNotBlank(orderFollowerUser)) { AdminUserDO user = adminUserService.getUser(Long.valueOf(orderFollowerUser)); String email = user.getEmail(); MailSendMessage message = new MailSendMessage(); message.setAccountId(1L); message.setMail(email); message.setTitle("OMS订单系统"); - message.setContent("您好,订单:"+saleOrder.getBillno()+",已审核通过!"); - mailSendService.doSendMail(message,new File(pdfPath)); + message.setContent("您好,订单:" + saleOrder.getBillno() + ",已审核通过!"); + mailSendService.doSendMail(message, new File(pdfPath)); } } } break; case "unaudit": //审核 for (SaleOrderDO saleOrder : saleOrders) { - if(!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus())) { - throw new ServiceException(001,"订单状态不等于已审核状态,不允许反审核!"); + if (!BillStatusEnum.AUDIT.getValue().equals(saleOrder.getBillStatus())) { + throw new ServiceException(001, "订单状态不等于已审核状态,不允许反审核!"); } saleOrder.setBillStatus(BillStatusEnum.SUBMIT.getValue()); saleOrder.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); @@ -411,13 +418,14 @@ public class SaleOrderServiceImpl implements SaleOrderService { /** * 生成产品单价记录 */ - private void generateProductPrice(Long productId,BigDecimal price){ + private void generateProductPrice(Long productId, BigDecimal price) { ProductPriceSaveReqVO saveReqVO = new ProductPriceSaveReqVO(); saveReqVO.setProductId(productId); saveReqVO.setPrice(price); productPriceService.createProductPrice(saveReqVO); } + @Override @Transactional(rollbackFor = Exception.class) public void generateProduceOrder(List ids) { @@ -454,19 +462,19 @@ public class SaleOrderServiceImpl implements SaleOrderService { Double specSizeHeight = productInfo.getSpecSizeHeight(); String specMaterial = productInfo.getSpecMaterial(); StringBuffer str = new StringBuffer(); - str.append(String.format("货名:%s\r\n",productInfo.getName())); - str.append(String.format("规格:%s × %s \r\n",specSizeWidth,specSizeHeight)); - str.append(String.format("纸质:%s \r\n",specMaterial)); + str.append(String.format("货名:%s\r\n", productInfo.getName())); + str.append(String.format("规格:%s × %s \r\n", specSizeWidth, specSizeHeight)); + str.append(String.format("纸质:%s \r\n", specMaterial)); saveReqVO.setDetails(str.toString()); Long produceOrderId = produceOrderService.createProduceOrder(saveReqVO); } //更新销售订单已完成 //if(produceOrderId!=null){ - SaleOrderDO saleOrderDO = new SaleOrderDO(); - saleOrderDO.setId(saleOrder.getId()); - saleOrderDO.setOrderStatus(SaleOrderStatusEnum.YWC.getValue()); - saleOrderMapper.updateById(saleOrderDO); + SaleOrderDO saleOrderDO = new SaleOrderDO(); + saleOrderDO.setId(saleOrder.getId()); + saleOrderDO.setOrderStatus(SaleOrderStatusEnum.YWC.getValue()); + saleOrderMapper.updateById(saleOrderDO); //} } } @@ -478,12 +486,12 @@ public class SaleOrderServiceImpl implements SaleOrderService { return templateEngine.process("pdf_template", context); } - private String generateHtmlContent(SaleContractDO saleContract,List saleContractEntrys) { - Context context = generateHtmlContents(saleContract,saleContractEntrys); + private String generateHtmlContent(SaleContractDO saleContract, List saleContractEntrys) { + Context context = generateHtmlContents(saleContract, saleContractEntrys); return templateEngine.process("pdf_template", context); } - private Context generateHtmlContents(SaleContractDO saleContract,List saleContractEntrys){ + private Context generateHtmlContents(SaleContractDO saleContract, List saleContractEntrys) { CustomerDO customer = customerService.getCustomer(saleContract.getCustomerId()); Context context = new Context(); context.setVariable("title", "销售合约"); @@ -500,7 +508,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { context.setVariable("clerk", saleContract.getClerk()); context.setVariable("saleOrderNo", saleContract.getCustomerBuyNo()); context.setVariable("totalAmount", saleContract.getAmount()); - context.setVariable("zhTotalAmount", "合共人民币"+NumberChineseFormatterUtils.convertToChinese(saleContract.getAmount())+"整"); + context.setVariable("zhTotalAmount", "合共人民币" + NumberChineseFormatterUtils.convertToChinese(saleContract.getAmount()) + "整"); for (int i = 0; i < saleContractEntrys.size(); i++) { SaleContractEntryDO saleContractEntryDO = saleContractEntrys.get(i); @@ -512,24 +520,24 @@ public class SaleOrderServiceImpl implements SaleOrderService { Double specSizeHeight = productInfo.getSpecSizeHeight(); Double specSizeWidth = productInfo.getSpecSizeWidth(); Double specSizeThk = productInfo.getSpecSizeThk(); - String spec = specSizeWidth.doubleValue()+ " * " + specSizeHeight.doubleValue() + " " + specSizeThk.doubleValue(); - int j = i+1; - context.setVariable("item"+j, j+""); - context.setVariable("explain"+j, code); - context.setVariable("qty"+j, saleContractEntryDO.getQty()); - context.setVariable("price"+j, saleContractEntryDO.getPrice()); - context.setVariable("discount"+j, saleContractEntryDO.getDiscount()); - context.setVariable("amount"+j, saleContractEntryDO.getAmount()); - context.setVariable("deliverydate"+j, DateUtil.date(saleContractEntryDO.getDeliveryDate()).toDateStr()); - context.setVariable("explain"+j+"1", name); - context.setVariable("explain"+j+"2", details); - context.setVariable("explain"+j+"3", spec); + String spec = specSizeWidth.doubleValue() + " * " + specSizeHeight.doubleValue() + " " + specSizeThk.doubleValue(); + int j = i + 1; + context.setVariable("item" + j, j + ""); + context.setVariable("explain" + j, code); + context.setVariable("qty" + j, saleContractEntryDO.getQty()); + context.setVariable("price" + j, saleContractEntryDO.getPrice()); + context.setVariable("discount" + j, saleContractEntryDO.getDiscount()); + context.setVariable("amount" + j, saleContractEntryDO.getAmount()); + context.setVariable("deliverydate" + j, DateUtil.date(saleContractEntryDO.getDeliveryDate()).toDateStr()); + context.setVariable("explain" + j + "1", name); + context.setVariable("explain" + j + "2", details); + context.setVariable("explain" + j + "3", spec); } return context; } @Override - public void generatePdf(HttpServletResponse response,List ids) throws IOException { + public void generatePdf(HttpServletResponse response, List ids) throws IOException { List delFiles = new ArrayList<>(); List files = new ArrayList<>(); List saleOrders = saleOrderMapper.selectList(SaleOrderDO::getId, ids); @@ -538,29 +546,29 @@ public class SaleOrderServiceImpl implements SaleOrderService { SaleContractSaveReqVO saleContractVO = toSaleContractVO(saleOrder, entrys); SaleContractDO saleContract = BeanUtils.toBean(saleContractVO, SaleContractDO.class); List saleContractEntrys = BeanUtils.toBean(saleContractVO.getSaleContractEntrys(), SaleContractEntryDO.class); - String htmlContent = generateHtmlContent(saleContract,saleContractEntrys); + String htmlContent = generateHtmlContent(saleContract, saleContractEntrys); //docker生成路径 String pathUrl = System.getProperty("user.dir") + "/pdffile"; - String fileName = StrUtil.format(pathUrl+"/SaleContract_{}", saleOrder.getBillno()); + String fileName = StrUtil.format(pathUrl + "/SaleContract_{}", saleOrder.getBillno()); //主宿机生成路径 - String fileName2 = StrUtil.format(pdfPath+"/SaleContract_{}", saleOrder.getBillno()); + String fileName2 = StrUtil.format(pdfPath + "/SaleContract_{}", saleOrder.getBillno()); String templatePath = fileName + ".html"; String pdfPath = fileName + ".pdf"; String templatePath2 = fileName2 + ".html"; String pdfPath2 = fileName2 + ".pdf"; - FileUtil.writeString(htmlContent,templatePath, "UTF-8"); + FileUtil.writeString(htmlContent, templatePath, "UTF-8"); - log.info("已生成HTML文件:"+templatePath); + log.info("已生成HTML文件:" + templatePath); //请求wkapp JSONObject params = new JSONObject(); - params.put("input_html_path","file://"+templatePath2); - params.put("output_pdf_path",pdfPath2); - log.info("请求wkapp接口url:"+wkappUrl+"/exehtmltopdf"); + params.put("input_html_path", "file://" + templatePath2); + params.put("output_pdf_path", pdfPath2); + log.info("请求wkapp接口url:" + wkappUrl + "/exehtmltopdf"); String result = HttpUtil.post(wkappUrl + "/exehtmltopdf", params, 5 * 60 * 1000); - log.info("请求wkapp接口返回结果:"+result); + log.info("请求wkapp接口返回结果:" + result); //WKHtmlToPdfUtil.convert(templatePath, pdfPath); File file = FileUtil.file(pdfPath); files.add(file); @@ -571,16 +579,16 @@ public class SaleOrderServiceImpl implements SaleOrderService { String zipFileName = StrUtil.format(pathUrl + "/SaleContract_{}", new Date().getTime()); // 压缩到的位置 - File zipFile = new File(zipFileName+".zip"); + File zipFile = new File(zipFileName + ".zip"); - ZipUtil.zip(zipFile,false,files.toArray(new File[files.size()])); + ZipUtil.zip(zipFile, false, files.toArray(new File[files.size()])); //downloadZip(zipFile,response); // 设置响应类型 //response.setContentType("application/pdf"); response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFile.getName(),"UTF-8")); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(zipFile.getName(), "UTF-8")); // 输出PDF到响应输出流 // 将文件内容写入响应流 @@ -608,10 +616,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { LocalDateTime lastEndWeekDate = DateUtil.endOfWeek(DateUtil.lastWeek()).toLocalDateTime(); return new DataComparisonRespVO() - .setValue(getOrderQtySummary(dayDate,dayDate,customerId))//今日 - .setReference(getOrderQtySummary(lastDayDate,lastDayDate,customerId))//昨日 - .setValue2(getOrderQtySummary(beginWeekDate,endWeekDate,customerId))//本周 - .setReference2(getOrderQtySummary(lastBeginWeekDate,lastEndWeekDate,customerId));//上周 + .setValue(getOrderQtySummary(dayDate, dayDate, customerId))//今日 + .setReference(getOrderQtySummary(lastDayDate, lastDayDate, customerId))//昨日 + .setValue2(getOrderQtySummary(beginWeekDate, endWeekDate, customerId))//本周 + .setReference2(getOrderQtySummary(lastBeginWeekDate, lastEndWeekDate, customerId));//上周 } @Override @@ -627,9 +635,9 @@ public class SaleOrderServiceImpl implements SaleOrderService { @Override public Long getCountByBillStatus(String billstatus, Long customerId) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SaleOrderDO::getBillStatus,billstatus); - if(customerId!=null){ - lambdaQueryWrapper.eq(SaleOrderDO::getCustomerId,customerId); + lambdaQueryWrapper.eq(SaleOrderDO::getBillStatus, billstatus); + if (customerId != null) { + lambdaQueryWrapper.eq(SaleOrderDO::getCustomerId, customerId); } return saleOrderMapper.selectCount(lambdaQueryWrapper); } @@ -654,6 +662,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { long l = IdUtil.getSnowflake().nextId(); System.out.println(l); } + @Override @Transactional(rollbackFor = Exception.class) public Long placeOrder(CreateSaleOrderDTO dto) { @@ -678,7 +687,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { // sku for (SaleOrderSkuDTO saleOrderSkuDTO : productSkuList) { SaleOrderSkuDO saleOrderSkuDO = new SaleOrderSkuDO(); - BeanUtil.copyProperties(saleOrderSkuDTO,saleOrderSkuDO,"specInfo"); + BeanUtil.copyProperties(saleOrderSkuDTO, saleOrderSkuDO, "specInfo"); saleOrderSkuDO.setSaleOrderId(order.getId()); saleOrderSkuDO.setEntryId(entry.getId()); saleOrderSkuDO.setProductTemplateType(saleOrderSkuDTO.getProductTemplateType()); @@ -699,7 +708,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { @Override @Transactional(rollbackFor = Exception.class) - public Long editOrder(Long id,CreateSaleOrderDTO dto) { + public Long editOrder(Long id, CreateSaleOrderDTO dto) { SaleOrderDO saleOrderDO = checkEditOrder(id); // 校验订单 @@ -734,7 +743,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { // sku for (SaleOrderSkuDTO saleOrderSkuDTO : productSkuList) { SaleOrderSkuDO saleOrderSkuDO = new SaleOrderSkuDO(); - BeanUtil.copyProperties(saleOrderSkuDTO,saleOrderSkuDO,"specInfo"); + BeanUtil.copyProperties(saleOrderSkuDTO, saleOrderSkuDO, "specInfo"); saleOrderSkuDO.setSaleOrderId(order.getId()); saleOrderSkuDO.setEntryId(entry.getId()); saleOrderSkuDO.setProductTemplateType(saleOrderSkuDTO.getProductTemplateType()); @@ -750,60 +759,64 @@ public class SaleOrderServiceImpl implements SaleOrderService { updateCustomerInvoiceData(order); return order.getId(); } + private static final long codeId = 6L; private static final long saleContractCodeId = 7L; + @Override public String getNewOrderCode() { String s = ""; int count = 10; - while (true){ - count --; + while (true) { + count--; try { - s = CodingRulesUtils.generateCode(codeId, false); - checkCode(null,s); + s = CodingRulesUtils.generateCode(codeId, false); + checkCode(null, s); return s; - }catch (ServiceException e){ + } catch (ServiceException e) { log.warn("重复或者下一个编码"); - if(count < 0){ + if (count < 0) { log.error("编码获取失败"); return ""; } } } } + @Override public String getNewContractCode2() { String s = ""; int count = 10; - while (true){ - count --; + while (true) { + count--; try { - s = CodingRulesUtils.generateCode(saleContractCodeId, false); - checkSaleContractCode2(null,s); + s = CodingRulesUtils.generateCode(saleContractCodeId, false); + checkSaleContractCode2(null, s); return s; - }catch (ServiceException e){ + } catch (ServiceException e) { log.warn("重复或者下一个编码"); - if(count < 0){ + if (count < 0) { log.error("编码获取失败"); return ""; } } } } - private void checkCode(Long id,String code){ - if(FuncUtil.isNotEmpty(code)){ + + private void checkCode(Long id, String code) { + if (FuncUtil.isNotEmpty(code)) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(SaleOrderDO::getId,SaleOrderDO::getOrderCode, BaseDO::getDeleted); + lambdaQueryWrapper.select(SaleOrderDO::getId, SaleOrderDO::getOrderCode, BaseDO::getDeleted); lambdaQueryWrapper.eq(SaleOrderDO::getOrderCode, code); - lambdaQueryWrapper.eq(SaleOrderDO::getDeleted,false); + lambdaQueryWrapper.eq(SaleOrderDO::getDeleted, false); List dos = saleOrderMapper.selectList(lambdaQueryWrapper); - if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + if (FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)) { throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); } if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { for (SaleOrderDO aDo : dos) { // 出现重复并当前id 不一致 - if(!FuncUtil.equals(aDo.getId(), id)){ + if (!FuncUtil.equals(aDo.getId(), id)) { throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); } } @@ -812,44 +825,45 @@ public class SaleOrderServiceImpl implements SaleOrderService { } - private void checkSaleContractCode2(Long id, String code){ - if(FuncUtil.isNotEmpty(code)){ + private void checkSaleContractCode2(Long id, String code) { + if (FuncUtil.isNotEmpty(code)) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.select(SaleContractDO::getId,SaleContractDO::getBillno, BaseDO::getDeleted); + lambdaQueryWrapper.select(SaleContractDO::getId, SaleContractDO::getBillno, BaseDO::getDeleted); lambdaQueryWrapper.eq(SaleContractDO::getBillno, code); - lambdaQueryWrapper.eq(SaleContractDO::getDeleted,false); + lambdaQueryWrapper.eq(SaleContractDO::getDeleted, false); List dos = saleContractMapper.selectList(lambdaQueryWrapper); - if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + if (FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)) { throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); } if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { for (SaleContractDO aDo : dos) { // 出现重复并当前id 不一致 - if(!FuncUtil.equals(aDo.getId(), id)){ + if (!FuncUtil.equals(aDo.getId(), id)) { throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); } } } } } - private SaleOrderDO wrapperEntity(SaleOrderDO order,CreateSaleOrderDTO dto){ + + private SaleOrderDO wrapperEntity(SaleOrderDO order, CreateSaleOrderDTO dto) { // 客户信息 LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); - AssertUtil.isEmpty(loginUser,"登录信息已过期,请重新登录"); + AssertUtil.isEmpty(loginUser, "登录信息已过期,请重新登录"); CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); - AssertUtil.isEmpty(customer,"客户信息不存在"); + AssertUtil.isEmpty(customer, "客户信息不存在"); order.setCustomerId(customer.getId()); - if(FuncUtil.isEmpty(order.getId())){ + if (FuncUtil.isEmpty(order.getId())) { order.setId(FuncUtil.getNextId()); } order.setBizdate(LocalDateTime.now()); - order.setPlansenddate( FuncUtil.timeToLocalDate(dto.getPlansenddate())); + order.setPlansenddate(FuncUtil.timeToLocalDate(dto.getPlansenddate())); // 设置订单状态 order.setOrderStatus(SaleOrderStatusEnum.YXD.getValue()); order.setBillStatus(BillStatusEnum.SUBMIT.getValue()); String orderType = order.getOrderType(); - if(FuncUtil.isEmpty(orderType)){ + if (FuncUtil.isEmpty(orderType)) { order.setOrderType(SaleOrderTypeEnum.NORMAL.getType()); } order.setBillno(getNewOrderCode()); @@ -869,7 +883,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { LocalDateTime beginTime = LocalDateTimeUtil.beginOfDay(beginDate); LocalDateTime endTime = LocalDateTimeUtil.endOfDay(endDate); return saleOrderMapper.selectOrderQtySummaryByOrderStatusAndCreateTimeBetween( - null, beginTime, endTime,customerId); + null, beginTime, endTime, customerId); } @@ -890,10 +904,10 @@ public class SaleOrderServiceImpl implements SaleOrderService { BigDecimal price = saleOrderEntryDO.getPrice(); Integer qty = saleOrderEntryDO.getQty(); BigDecimal discount = saleOrderEntryDO.getDiscount(); - if(price!=null){ - if(discount!=null){ + if (price != null) { + if (discount != null) { saleOrderEntryDO.setAmount(price.multiply(BigDecimal.valueOf(qty)).multiply(discount)); - }else { + } else { saleOrderEntryDO.setAmount(price.multiply(BigDecimal.valueOf(qty))); } amount = amount.add(saleOrderEntryDO.getAmount()); @@ -909,7 +923,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { private void updateSaleOrderEntryList(Long parentId, List list) { deleteSaleOrderEntryByParentId(parentId); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 createSaleOrderEntryList(parentId, list); } @@ -921,14 +935,14 @@ public class SaleOrderServiceImpl implements SaleOrderService { /** * 更新客户发票数据 */ - private void updateCustomerInvoiceData(SaleOrderDO order){ + private void updateCustomerInvoiceData(SaleOrderDO order) { String invoiceCode = order.getInvoiceCode(); String invoiceName = order.getInvoiceName(); String invoiceAddress = order.getInvoiceAddress(); Long customerId = order.getCustomerId(); - if(customerId!=null){ + if (customerId != null) { CustomerDO customer = customerService.getCustomer(customerId); - if(customer!=null){ + if (customer != null) { customer.setInvoiceCode(invoiceCode); customer.setInvoiceName(invoiceName); customer.setInvoiceAddress(invoiceAddress); @@ -938,18 +952,18 @@ public class SaleOrderServiceImpl implements SaleOrderService { } - private Long generateSaleContract(SaleOrderDO saleOrder, List entrys){ + private Long generateSaleContract(SaleOrderDO saleOrder, List entrys) { SaleContractSaveReqVO saveReqVO = toSaleContractVO(saleOrder, entrys); return saleContractService.createSaleContract(saveReqVO); } - private SaleContractSaveReqVO toSaleContractVO(SaleOrderDO saleOrder, List entrys){ + private SaleContractSaveReqVO toSaleContractVO(SaleOrderDO saleOrder, List entrys) { CustomerDO customer = customerService.getCustomer(saleOrder.getCustomerId()); SaleContractSaveReqVO saveReqVO = new SaleContractSaveReqVO(); // 优先使用销售订单合同号 String billno = saleOrder.getContractCode(); - if(FuncUtil.isEmpty(billno)){ + if (FuncUtil.isEmpty(billno)) { billno = getNewContractCode2(); } saveReqVO.setBillno(billno); @@ -991,11 +1005,29 @@ public class SaleOrderServiceImpl implements SaleOrderService { @Override public List queryFollowerUserListByBrandId(String brandId) { - // TODO 查询品牌下的所有跟单人员 List res = new ArrayList<>(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(UserBrandDO::getBrandId, brandId); + queryWrapper.eq(UserBrandDO::getDeleted, false); + List userBrandDOS = userBrandMapper.selectList(queryWrapper); + for (UserBrandDO brandDO : userBrandDOS) { + SaleOrderFollowerUserVO userVO = new SaleOrderFollowerUserVO(); + + AdminUserDO user = adminUserService.getUser(brandDO.getUserId()); + String userNane = ""; + if (FuncUtil.isEmpty(user) || user.getDeleted()) { + continue; + } + userNane = user.getUsername(); + userVO.setId(brandDO.getUserId()); + userVO.setUsername(userNane); + res.add(userVO); + } + if (FuncUtil.isEmpty(res)) { + // 设置管理为跟单员 + res.add(new SaleOrderFollowerUserVO().setId(1L).setUsername("admin")); + } - // 测试数据 - res.add(new SaleOrderFollowerUserVO().setId(1L).setUsername("admin")); return res; } @@ -1005,7 +1037,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { CreateSaleOrderDTO res = new CreateSaleOrderDTO(); SaleOrderDO saleOrderDO = checkEditOrder(id); BeanUtil.copyProperties(saleOrderDO, res); - LambdaQueryWrapper entryQueryWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper entryQueryWrapper = new LambdaQueryWrapper<>(); entryQueryWrapper.eq(SaleOrderEntryDO::getParentId, saleOrderDO.getId()); entryQueryWrapper.eq(SaleOrderEntryDO::getDeleted, false); List entryDOS = saleOrderEntryMapper.selectList(entryQueryWrapper); @@ -1032,7 +1064,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { // unit: row.unit || 'pcs', // sku list - LambdaQueryWrapper skuWrapper = new LambdaQueryWrapper<>(); + LambdaQueryWrapper skuWrapper = new LambdaQueryWrapper<>(); skuWrapper.eq(SaleOrderSkuDO::getSaleOrderId, saleOrderDO.getId()); skuWrapper.eq(SaleOrderSkuDO::getDeleted, false); List sukList = skuOrderSkuMapper.selectList(skuWrapper); @@ -1067,7 +1099,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { toClient = new BufferedOutputStream(response.getOutputStream()); response.setCharacterEncoding("UTF-8"); response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(),"UTF-8")); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), "UTF-8")); toClient.write(buffer); toClient.flush(); } catch (Exception e) { @@ -1085,7 +1117,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { } } - private SaleOrderDO checkEditOrder(Long id){ + private SaleOrderDO checkEditOrder(Long id) { SaleOrderDO saleOrderDO = saleOrderMapper.selectById(id); AssertUtil.isEmpty(saleOrderDO, "订单不存在"); String billStatus = saleOrderDO.getBillStatus(); @@ -1093,7 +1125,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { boolean order1 = BillStatusEnum.isCanEditOrder(billStatus); BillStatusEnum byValue = BillStatusEnum.getByValue(billStatus); AssertUtil.isEmpty(byValue, "订单状态异常"); - AssertUtil.isTrue(!order1,byValue.getName()+"状态不允许修改" ); + AssertUtil.isTrue(!order1, byValue.getName() + "状态不允许修改"); return saleOrderDO; } diff --git a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/user/AdminUserServiceImpl.java b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/user/AdminUserServiceImpl.java index 57b2a67..8df27eb 100644 --- a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/user/AdminUserServiceImpl.java +++ b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/service/user/AdminUserServiceImpl.java @@ -1,7 +1,10 @@ package cn.hangtag.module.system.service.user; +import cn.hangtag.framework.common.util.FuncUtil; import cn.hangtag.module.system.dal.dataobject.brand.UserBrandDO; import cn.hangtag.module.system.dal.mysql.brand.UserBrandMapper; +import cn.hutool.cache.CacheUtil; +import cn.hutool.cache.impl.LFUCache; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.IoUtil; @@ -11,7 +14,6 @@ import cn.hangtag.framework.common.exception.ServiceException; import cn.hangtag.framework.common.pojo.PageResult; import cn.hangtag.framework.common.util.collection.CollectionUtils; import cn.hangtag.framework.common.util.object.BeanUtils; -import cn.hangtag.framework.datapermission.core.util.DataPermissionUtils; import cn.hangtag.module.infra.api.file.FileApi; import cn.hangtag.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO; import cn.hangtag.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO; @@ -84,6 +86,8 @@ public class AdminUserServiceImpl implements AdminUserService { @Resource private FileApi fileApi; + private static final LFUCache ADMIN_USERS_CACHE = CacheUtil.newLFUCache(500,1000*60*60*24L); + @Override @Transactional(rollbackFor = Exception.class) @LogRecord(type = SYSTEM_USER_TYPE, subType = SYSTEM_USER_CREATE_SUB_TYPE, bizNo = "{{#user.id}}", @@ -261,6 +265,7 @@ public class AdminUserServiceImpl implements AdminUserService { // 3. 记录操作日志上下文 LogRecordContext.putVariable("user", user); + ADMIN_USERS_CACHE.remove(id); } @Override @@ -280,7 +285,12 @@ public class AdminUserServiceImpl implements AdminUserService { @Override public AdminUserDO getUser(Long id) { - return userMapper.selectById(id); + AdminUserDO adminUserDO = ADMIN_USERS_CACHE.get(id); + if(FuncUtil.isEmpty(adminUserDO)){ + adminUserDO = userMapper.selectById(id); + ADMIN_USERS_CACHE.put(id,adminUserDO); + } + return adminUserDO; } @Override diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue index 07863ae..3919560 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/productinfo/ProductInfoForm.vue @@ -13,7 +13,7 @@ v-loading="formLoading" > - + @@ -67,12 +67,12 @@ - + - + @@ -81,12 +81,13 @@ - + - + @@ -105,7 +106,8 @@ - +
添加 @@ -149,7 +151,9 @@
@@ -162,10 +166,10 @@ - + @@ -194,7 +198,7 @@ @@ -207,12 +211,12 @@ - + - + - +