From 693b8a60e975e815e2bef91532df30a5c97584d2 Mon Sep 17 00:00:00 2001 From: Mrking <782276617@qq.com> Date: Mon, 16 Sep 2024 14:11:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=A2=E6=88=B7=E8=8F=9C?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/customer/CustomerController.java | 2 - .../admin/customer/vo/CustomerPageReqVO.java | 3 + .../admin/customer/vo/CustomerRespVO.java | 8 ++ .../admin/customer/vo/CustomerSaveReqVO.java | 3 + .../admin/saleorder/SaleOrderController.java | 5 +- .../dal/dataobject/customer/CustomerDO.java | 4 + .../salecontract/SaleContractDO.java | 2 +- .../dal/mysql/customer/CustomerMapper.java | 2 +- .../service/customer/CustomerServiceImpl.java | 92 ++++++++++++++++++- .../produceorder/ProduceOrderServiceImpl.java | 2 +- .../service/saleorder/SaleOrderService.java | 4 +- .../saleorder/SaleOrderServiceImpl.java | 89 +++++++++++------- .../controller/admin/auth/AuthController.java | 13 ++- .../dal/mysql/user/AdminUserMapper.java | 1 + .../main/resources/json/customer_menu.json | 29 ++++++ .../target/classes/application.yaml | 6 ++ .../src/api/oms/customer/index.ts | 3 + .../src/api/oms/produceorder/index.ts | 2 +- .../src/views/Login/components/LoginForm.vue | 2 +- .../src/views/oms/customer/CustomerForm.vue | 14 ++- .../src/views/oms/customer/index.vue | 90 +++++++++++++++--- 21 files changed, 311 insertions(+), 65 deletions(-) create mode 100644 hangtag-module-system/hangtag-module-system-biz/src/main/resources/json/customer_menu.json diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java index f256448..b836d68 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/CustomerController.java @@ -46,8 +46,6 @@ public class CustomerController { @Resource private CustomerService customerService; - - @PostMapping("/create") @Operation(summary = "创建客户") @PreAuthorize("@ss.hasPermission('oms:customer:create')") diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java index cd4a0af..3c4bfb9 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerPageReqVO.java @@ -18,6 +18,9 @@ public class CustomerPageReqVO extends PageParam { @Schema(description = "ID", example = "21486") private Long id; + @Schema(description = "编码", example = "21486") + private String number; + @Schema(description = "名称", example = "赵六") private String name; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java index cd7d50e..73760b5 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java @@ -18,6 +18,14 @@ public class CustomerRespVO { @ExcelProperty("ID") private Long id; + @Schema(description = "用户ID", example = "12355") + @ExcelProperty("用户ID") + private Long userId; + + @Schema(description = "编码", example = "12355") + @ExcelProperty("编码") + private String number; + @Schema(description = "名称", example = "赵六") @ExcelProperty("名称") private String name; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java index 5da7bf5..5ca029f 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java @@ -15,6 +15,9 @@ public class CustomerSaveReqVO { @ExcelProperty("ID") private Long id; + @Schema(description = "编码", example = "XXXXX") + private String number; + @Schema(description = "名称", example = "赵六") private String name; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java index a697e32..5fe711c 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/saleorder/SaleOrderController.java @@ -148,9 +148,8 @@ public class SaleOrderController { */ @GetMapping("/download") @PermitAll - public void downloadPdf(HttpServletResponse response) throws Exception { - String htmlContent = saleOrderService.generateHtmlContent(); - saleOrderService.generatePdf(response, htmlContent); + public void downloadPdf(HttpServletResponse response) throws Exception{ + saleOrderService.generatePdf(response); } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java index 1de9487..b90f744 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java @@ -27,6 +27,10 @@ public class CustomerDO extends BaseDO { */ @TableId private Long id; + /** + * 客户编码 + */ + private String number; /** * 系统用户Id */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/salecontract/SaleContractDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/salecontract/SaleContractDO.java index 70c1290..2717f9c 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/salecontract/SaleContractDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/salecontract/SaleContractDO.java @@ -36,7 +36,7 @@ public class SaleContractDO extends BaseDO { /** * 客户id */ - private String customerId; + private Long customerId; /** * 客户名称 */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java index 8567c89..ff8b2f7 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/customer/CustomerMapper.java @@ -19,7 +19,7 @@ public interface CustomerMapper extends BaseMapperX { default PageResult selectPage(CustomerPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(CustomerDO::getId, reqVO.getId()) + .eqIfPresent(CustomerDO::getNumber, reqVO.getNumber()) .likeIfPresent(CustomerDO::getName, reqVO.getName()) .likeIfPresent(CustomerDO::getCompany, reqVO.getCompany()) .eqIfPresent(CustomerDO::getType, reqVO.getType()) diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java index 4837993..8b87d1b 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java @@ -1,8 +1,17 @@ package cn.hangtag.module.oms.service.customer; +import cn.hangtag.framework.common.exception.ServiceException; +import cn.hangtag.framework.common.exception.enums.GlobalErrorCodeConstants; +import cn.hangtag.framework.common.util.FuncUtil; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; +import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; import cn.hangtag.module.system.controller.admin.user.vo.user.UserSaveReqVO; import cn.hangtag.module.system.service.permission.PermissionService; import cn.hangtag.module.system.service.user.AdminUserService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -30,6 +39,7 @@ import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; */ @Service @Validated +@Slf4j public class CustomerServiceImpl implements CustomerService { @Value("${sys.user.init-password:hangtagyuanma}") @@ -51,6 +61,12 @@ public class CustomerServiceImpl implements CustomerService { public Long createCustomer(CustomerSaveReqVO createReqVO) { // 插入 CustomerDO customer = BeanUtils.toBean(createReqVO, CustomerDO.class); + String number = customer.getNumber(); + if(FuncUtil.isNotEmpty(number)){ + checkCode(customer.getId(),number); + }else { + customer.setNumber(getNewCode()); + } //新增用户账号 UserSaveReqVO userSaveReqVO = new UserSaveReqVO(); @@ -82,31 +98,54 @@ public class CustomerServiceImpl implements CustomerService { @Transactional(rollbackFor = Exception.class) public void updateCustomer(CustomerSaveReqVO updateReqVO) { // 校验存在 - validateCustomerExists(updateReqVO.getId()); + CustomerDO customerDO = validateCustomerExists(updateReqVO.getId()); + + if(StringUtils.isNotBlank(updateReqVO.getNumber()) && !customerDO.getNumber().equals(updateReqVO.getNumber())){//编码不一致 + checkCode(customerDO.getId(),updateReqVO.getNumber()); + }else { + updateReqVO.setNumber(customerDO.getNumber()); + } + // 更新 CustomerDO updateObj = BeanUtils.toBean(updateReqVO, CustomerDO.class); customerMapper.updateById(updateObj); - // 更新子表 updateCustomerAddressList(updateReqVO.getId(), updateReqVO.getCustomerAddresss()); + + //更新用户表状态 + if(!customerDO.getStatus().equals(updateObj.getStatus())){//状态不一致 + if("0".equals(customerDO.getStatus())){//禁用 + userService.updateUserStatus(customerDO.getUserId(), 1); + }else {//启用 + userService.updateUserStatus(customerDO.getUserId(), 0); + } + } } @Override @Transactional(rollbackFor = Exception.class) public void deleteCustomer(Long id) { // 校验存在 - validateCustomerExists(id); + CustomerDO customerDO = validateCustomerExists(id); + // 删除 customerMapper.deleteById(id); // 删除子表 deleteCustomerAddressByCustomerId(id); + + // 删除用户表 + userService.deleteUser(customerDO.getUserId()); + } - private void validateCustomerExists(Long id) { - if (customerMapper.selectById(id) == null) { + private CustomerDO validateCustomerExists(Long id) { + CustomerDO customerDO = customerMapper.selectById(id); + if (customerDO == null) { throw exception(CUSTOMER_NOT_EXISTS); + }else { + return customerDO; } } @@ -148,4 +187,47 @@ public class CustomerServiceImpl implements CustomerService { customerAddressMapper.deleteByCustomerId(customerId); } + + + + private String getNewCode() { + String s = ""; + int count = 10; + while (true){ + count --; + try { + s = CodingRulesUtils.generateCode(3L, false); + checkCode(null,s); + return s; + }catch (ServiceException e){ + log.warn("重复或者下一个编码"); + if(count < 0){ + log.error("编码获取失败"); + return ""; + } + } + } + } + + private void checkCode(Long id,String code){ + if(FuncUtil.isNotEmpty(code)){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.select(CustomerDO::getId,CustomerDO::getNumber, BaseDO::getDeleted); + lambdaQueryWrapper.eq(CustomerDO::getNumber, code); + lambdaQueryWrapper.eq(CustomerDO::getDeleted,false); + List dos = customerMapper.selectList(lambdaQueryWrapper); + if(FuncUtil.isEmpty(id) && FuncUtil.isNotEmpty(dos)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + if (FuncUtil.isNotEmpty(id) && FuncUtil.isNotEmpty(dos)) { + for (CustomerDO aDo : dos) { + // 出现重复并当前id 不一致 + if(!FuncUtil.equals(aDo.getId(), id)){ + throw exception(GlobalErrorCodeConstants.DATA_DUPLICATE); + } + } + } + } + } + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java index 91f2458..0c63d5d 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java @@ -140,7 +140,7 @@ public class ProduceOrderServiceImpl implements ProduceOrderService { while (true){ count --; try { - s = CodingRulesUtils.generateCode(3L, false); + s = CodingRulesUtils.generateCode(5L, false); checkCode(null,s); return s; }catch (ServiceException e){ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java index c2061b8..db653b9 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/saleorder/SaleOrderService.java @@ -74,9 +74,7 @@ public interface SaleOrderService { void generateProduceOrder(List ids); - String generateHtmlContent(); - - void generatePdf(HttpServletResponse response, String htmlContent) throws IOException; + void generatePdf(HttpServletResponse response) throws IOException; /** * 交易订单销售额对照 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 b0e326c..49a1abb 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 @@ -2,20 +2,28 @@ package cn.hangtag.module.oms.service.saleorder; import cn.hangtag.framework.common.pojo.PageResult; import cn.hangtag.framework.common.util.object.BeanUtils; +import cn.hangtag.module.oms.common.utils.NumberChineseFormatterUtils; import cn.hangtag.module.oms.common.utils.WKHtmlToPdfUtil; import cn.hangtag.module.oms.controller.admin.common.vo.DataComparisonRespVO; import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; -import cn.hangtag.module.oms.common.utils.NumberChineseFormatterUtils; +import cn.hangtag.module.oms.controller.admin.salecontract.vo.SaleContractSaveReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderPageReqVO; import cn.hangtag.module.oms.controller.admin.saleorder.vo.SaleOrderSaveReqVO; import cn.hangtag.module.oms.controller.admin.trade.vo.TradeOrderSummaryRespVO; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.productinfo.ProductInfoDO; +import cn.hangtag.module.oms.dal.dataobject.salecontract.SaleContractDO; +import cn.hangtag.module.oms.dal.dataobject.salecontractentry.SaleContractEntryDO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.dal.dataobject.saleorderentry.SaleOrderEntryDO; import cn.hangtag.module.oms.dal.mysql.saleorder.SaleOrderMapper; import cn.hangtag.module.oms.dal.mysql.saleorderentry.SaleOrderEntryMapper; import cn.hangtag.module.oms.enums.common.BillStatusEnum; import cn.hangtag.module.oms.enums.saleorder.SaleOrderStatusEnum; +import cn.hangtag.module.oms.service.customer.CustomerService; import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; +import cn.hangtag.module.oms.service.productinfo.ProductInfoService; +import cn.hangtag.module.oms.service.salecontract.SaleContractService; import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.io.FileUtil; @@ -23,6 +31,7 @@ import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -60,6 +69,12 @@ public class SaleOrderServiceImpl implements SaleOrderService { private SaleOrderEntryMapper saleOrderEntryMapper; @Resource private ProduceOrderService produceOrderService; + @Resource + private ProductInfoService productInfoService; + @Resource + private SaleContractService saleContractService; + @Resource + private CustomerService customerService; @Resource private TemplateEngine templateEngine; @@ -174,46 +189,56 @@ public class SaleOrderServiceImpl implements SaleOrderService { } } - @Override - public String generateHtmlContent() { + private String generateHtmlContent(Long saleContractId) { + SaleContractDO saleContract = saleContractService.getSaleContract(saleContractId); + List saleContractEntrys = saleContractService.getSaleContractEntryListByParentId(saleContractId); + CustomerDO customer = customerService.getCustomer(saleContract.getCustomerId()); Context context = new Context(); context.setVariable("title", "销售合约"); - context.setVariable("partyACompany", "甲方(买方)公司"); - context.setVariable("contractNo", "合约编号XXXXXXX"); - context.setVariable("partyAAddress", "甲方地址XXXXXXXXXXXX"); - context.setVariable("bizDate", DateUtil.date().toDateStr()); - context.setVariable("customerNo", "托尼"); - context.setVariable("headUserName", "美特斯"); - context.setVariable("partyBCompany", "乙方(卖方)公司"); - context.setVariable("phone", "17198644317"); + context.setVariable("partyACompany", saleContract.getPartyA()); + context.setVariable("contractNo", saleContract.getBillno()); + context.setVariable("partyAAddress", customer.getCompanyAddress()); + context.setVariable("bizDate", DateUtil.date(saleContract.getBizdate()).toDateStr()); + context.setVariable("customerNo", customer.getNumber()); + context.setVariable("headUserName", saleContract.getHead()); + context.setVariable("partyBCompany", "乙方公司"); context.setVariable("partyBAddress", "乙方地址XXXXXXXXXXX"); - context.setVariable("fax", "CCCCCCCCCCCCC"); - context.setVariable("clerk", "李四"); - context.setVariable("saleOrderNo", "订单编号XXXXXXXXXX"); - context.setVariable("totalAmount", "1891.98"); + context.setVariable("phone", saleContract.getPhone()); + context.setVariable("fax", saleContract.getFax()); + context.setVariable("clerk", saleContract.getClerk()); + context.setVariable("saleOrderNo", saleContract.getCustomerBuyNo()); + context.setVariable("totalAmount", saleContract.getAmount()); + context.setVariable("zhTotalAmount", "合共人民币"+NumberChineseFormatterUtils.convertToChinese(saleContract.getAmount())+"整"); + for (int i = 0; i < saleContractEntrys.size(); i++) { + SaleContractEntryDO saleContractEntryDO = saleContractEntrys.get(i); + ProductInfoDO productInfo = productInfoService.getProductInfo(saleContractEntryDO.getProductId()); + //产品信息 + String code = productInfo.getCode(); + String name = productInfo.getName(); + String details = productInfo.getDetails(); - context.setVariable("zhTotalAmount", "合共人民币"+NumberChineseFormatterUtils.convertToChinese(new BigDecimal("1891.98"))+"整"); - - - for (int i = 1; i <= 5; i++) { - context.setVariable("item"+i, i+""); - context.setVariable("explain"+i, "AXXX"+i); - context.setVariable("qty"+i, "1233PCS"); - context.setVariable("price"+i, "8.12"); - context.setVariable("discount"+i, "0"); - context.setVariable("amount"+i, "123"); - context.setVariable("deliverydate"+i, "2024-09-15"); - context.setVariable("explain"+i+"1", "11111111"); - context.setVariable("explain"+i+"2", "22222222222222"); - context.setVariable("explain"+i+"3", "3333333333333333"); + 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, saleContractEntryDO.getDeliveryDate()); + context.setVariable("explain"+j+"1", name); + context.setVariable("explain"+j+"2", details); + context.setVariable("explain"+j+"3", ""); } - return templateEngine.process("pdf_template", context); } @Override - public void generatePdf(HttpServletResponse response, String htmlContent) throws IOException { + public void generatePdf(HttpServletResponse response) throws IOException { + + String htmlContent = generateHtmlContent(0L); + + // 设置响应类型 response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "attachment; filename=generated.pdf"); @@ -233,7 +258,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { IoUtil.copy(inputStream, response.getOutputStream()); } catch (IOException e) { // 异常处理 - log.info("导出电子病历写入流失败,{}", e.getMessage()); + log.info("导出销售合约写入流失败,{}", e.getMessage()); } // 导出完删除 diff --git a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/controller/admin/auth/AuthController.java b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/controller/admin/auth/AuthController.java index 66e5a63..34da094 100644 --- a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/controller/admin/auth/AuthController.java +++ b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/controller/admin/auth/AuthController.java @@ -1,6 +1,8 @@ package cn.hangtag.module.system.controller.admin.auth; +import cn.hangtag.framework.common.util.json.JsonUtils; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.StrUtil; import cn.hangtag.framework.common.enums.CommonStatusEnum; import cn.hangtag.framework.common.enums.UserTypeEnum; @@ -19,11 +21,13 @@ import cn.hangtag.module.system.service.permission.PermissionService; import cn.hangtag.module.system.service.permission.RoleService; import cn.hangtag.module.system.service.social.SocialClientService; import cn.hangtag.module.system.service.user.AdminUserService; +import cn.hutool.json.JSONUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; +import org.checkerframework.checker.units.qual.A; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -31,6 +35,7 @@ import javax.annotation.Resource; import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; @@ -111,8 +116,14 @@ public class AuthController { List menuList = menuService.getMenuList(menuIds); menuList.removeIf(menu -> !CommonStatusEnum.ENABLE.getStatus().equals(menu.getStatus())); // 移除禁用的菜单 + AuthPermissionInfoRespVO convert = AuthConvert.INSTANCE.convert(user, roles, menuList); + if(user.getDeptId()==999999L){//当前账号等于客户类型 + String customerMenuJson = ResourceUtil.readUtf8Str("json/customer_menu.json"); + List list = JSONUtil.toList(customerMenuJson, AuthPermissionInfoRespVO.MenuVO.class); + convert.setMenus(list); + } // 2. 拼接结果返回 - return success(AuthConvert.INSTANCE.convert(user, roles, menuList)); + return success(convert); } // ========== 短信登录相关 ========== diff --git a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/dal/mysql/user/AdminUserMapper.java b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/dal/mysql/user/AdminUserMapper.java index a99da8d..1a6d0f8 100644 --- a/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/dal/mysql/user/AdminUserMapper.java +++ b/hangtag-module-system/hangtag-module-system-biz/src/main/java/cn/hangtag/module/system/dal/mysql/user/AdminUserMapper.java @@ -36,6 +36,7 @@ public interface AdminUserMapper extends BaseMapperX { .eqIfPresent(AdminUserDO::getStatus, reqVO.getStatus()) .betweenIfPresent(AdminUserDO::getCreateTime, reqVO.getCreateTime()) .inIfPresent(AdminUserDO::getDeptId, deptIds) + .neIfPresent(AdminUserDO::getDeptId, 999999L)//不等于客户 .orderByDesc(AdminUserDO::getId)); } diff --git a/hangtag-module-system/hangtag-module-system-biz/src/main/resources/json/customer_menu.json b/hangtag-module-system/hangtag-module-system-biz/src/main/resources/json/customer_menu.json new file mode 100644 index 0000000..1a87907 --- /dev/null +++ b/hangtag-module-system/hangtag-module-system-biz/src/main/resources/json/customer_menu.json @@ -0,0 +1,29 @@ +[ + { + "id": 2804, + "parentId": 0, + "name": "订单管理", + "path": "/order", + "component": "", + "componentName": "", + "icon": "ep:edit", + "visible": true, + "keepAlive": true, + "alwaysShow": true, + "children": [ + { + "id": 2818, + "parentId": 2804, + "name": "创建订单", + "path": "createorder", + "component": "oms/order/createorder/index", + "componentName": "CreateOrder", + "icon": "", + "visible": true, + "keepAlive": true, + "alwaysShow": true, + "children": null + } + ] + } +] \ No newline at end of file diff --git a/hangtag-server/target/classes/application.yaml b/hangtag-server/target/classes/application.yaml index 106ba6f..e6ddef5 100644 --- a/hangtag-server/target/classes/application.yaml +++ b/hangtag-server/target/classes/application.yaml @@ -40,6 +40,12 @@ spring: redis: time-to-live: 1h # 设置过期时间为 1 小时 + thymeleaf: + prefix: classpath:/templates/ + suffix: .html + mode: HTML + encoding: UTF-8 + cache: false --- #################### 接口文档配置 #################### springdoc: diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts index 47e8b20..323295f 100644 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts @@ -2,7 +2,10 @@ import request from '@/config/axios' // 客户 VO export interface CustomerVO { + id: number // 编码 + number: string // 编码 name: string // 名称 + userId: number // 用户id company: string // 公司 companyAddress: string // 公司 email: string // 邮箱 diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts index 55a37c8..d4c2bc6 100644 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts @@ -57,7 +57,7 @@ export const ProduceOrderApi = { return await request.download({ url: `/oms/produce-order/export-excel`, params }) }, - importTemplate: async (params) => { + importTemplate: async () => { return request.download({ url: '/oms/produce-order/get-import-template' }) } diff --git a/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue index 5adf6d5..ca73045 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/Login/components/LoginForm.vue @@ -184,7 +184,7 @@ const loginData = reactive({ captchaEnable: import.meta.env.VITE_APP_CAPTCHA_ENABLE, tenantEnable: import.meta.env.VITE_APP_TENANT_ENABLE, loginForm: { - tenantName: '芋道源码', + tenantName: '', username: '', password: '', captchaVerification: '', diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue index e573825..e953053 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue @@ -7,6 +7,12 @@ label-width="100px" v-loading="formLoading" > + +
+ + 手动输入 +
+
@@ -61,7 +67,7 @@ - + @@ -89,6 +95,7 @@ const areaList = ref([]) // 地区列表 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formType = ref('') // 表单的类型:create - 新增;update - 修改 const formData = ref({ + number: undefined, name: undefined, company: undefined, companyAddress: undefined, @@ -128,11 +135,15 @@ const formRef = ref() // 表单 Ref const subTabsName = ref('customerAddress') const customerAddressFormRef = ref() + +const inputCode = ref(false) + /** 打开弹窗 */ const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type + inputCode.value = false resetForm() // 修改时,设置数据 if (id) { @@ -185,6 +196,7 @@ const submitForm = async () => { /** 重置表单 */ const resetForm = () => { formData.value = { + number: undefined, name: undefined, company: undefined, companyAddress: undefined, diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue index bd67686..1a0e382 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue @@ -8,10 +8,10 @@ :inline="true" label-width="68px" > - + 导出 - + @@ -108,7 +108,8 @@ @selection-change="handleSelectionChange" > - + + @@ -134,7 +135,7 @@ :formatter="dateFormatter" width="180px" /> - + @@ -180,13 +208,16 @@