From f1332e2765dc8bc03a001bf56f03a3b5e512e96d Mon Sep 17 00:00:00 2001 From: Mrking <782276617@qq.com> Date: Sun, 8 Sep 2024 23:12:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=9F=E4=BA=A7=E5=88=B6?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/oms/enums/ErrorCodeConstants.java | 3 +- .../produceorder/ProduceOrderController.java | 28 + .../vo/ProduceOrderImportExcelVO.java | 85 ++ .../vo/ProduceOrderImportRespVO.java | 24 + .../vo/ProduceOrderPageReqVO.java | 2 +- .../produceorder/vo/ProduceOrderRespVO.java | 2 +- .../vo/ProduceOrderSaveReqVO.java | 12 +- .../produceorder/ProduceOrderDO.java | 12 +- .../produceorder/ProduceOrderMapper.java | 3 + .../produceorder/ProduceOrderService.java | 1 + .../produceorder/ProduceOrderServiceImpl.java | 45 + .../saleorder/SaleOrderServiceImpl.java | 11 +- hangtag-ui/hangtag-ui-admin/index.html | 1 + hangtag-ui/hangtag-ui-admin/package.json | 2 + hangtag-ui/hangtag-ui-admin/pnpm-lock.yaml | 251 ++++ .../hangtag-ui-admin/public/print-lock.css | 349 +++++ .../src/api/oms/produceorder/index.ts | 123 +- .../produceorder/ProduceOrderImportForm.vue | 138 ++ .../oms/produceorder/components/preview.vue | 63 + .../src/views/oms/produceorder/index.vue | 67 +- .../src/views/oms/produceorder/template1.js | 1280 +++++++++++++++++ .../src/views/oms/saleorder/index.vue | 97 +- sql/mysql/init.sql | 5 + 23 files changed, 2508 insertions(+), 96 deletions(-) create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportExcelVO.java create mode 100644 hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportRespVO.java create mode 100644 hangtag-ui/hangtag-ui-admin/public/print-lock.css create mode 100644 hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderImportForm.vue create mode 100644 hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/components/preview.vue create mode 100644 hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/template1.js create mode 100644 sql/mysql/init.sql diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index 484d8d7..a0441eb 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -14,6 +14,7 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro ErrorCode CUSTOMER_BRAND_NOT_EXISTS = new ErrorCode(3800, "客户和品牌关联不存在"); ErrorCode PRODUCT_CARE_ITEM_NOT_EXISTS = new ErrorCode(3900, "产品保养项 不存在"); ErrorCode PRODUCE_ORDER_NOT_EXISTS = new ErrorCode(4000, "生产制单不存在"); - + ErrorCode PRODUCE_ORDER_EXISTS = new ErrorCode(4002, "生产制单已经存在"); + ErrorCode PRODUCE_ORDER_IMPORT_LIST_IS_EMPTY = new ErrorCode(4003, "导入生产制单数据不能为空"); } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java index 1c69cb2..5a3f7bd 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java @@ -1,5 +1,10 @@ package cn.hangtag.module.oms.controller.admin.produceorder; +import cn.hangtag.framework.common.enums.CommonStatusEnum; +import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportExcelVO; +import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportRespVO; +import cn.hangtag.module.system.enums.common.SexEnum; +import io.swagger.v3.oas.annotations.Parameters; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -28,6 +33,7 @@ import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*; import cn.hangtag.module.oms.controller.admin.produceorder.vo.*; import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; +import org.springframework.web.multipart.MultipartFile; @Tag(name = "管理后台 - 生产制单") @RestController @@ -92,4 +98,26 @@ public class ProduceOrderController { BeanUtils.toBean(list, ProduceOrderRespVO.class)); } + + @GetMapping("/get-import-template") + @Operation(summary = "获得导入生产制单模板") + public void importTemplate(HttpServletResponse response) throws IOException { + // 输出 + ExcelUtils.write(response, "生产制单导入模板.xls", "生产制单列表", ProduceOrderImportExcelVO.class, null); + } + + + @PostMapping("/import") + @Operation(summary = "导入生产制单") + @Parameters({ + @Parameter(name = "file", description = "Excel 文件", required = true), + @Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true") + }) + //@PreAuthorize("@ss.hasPermission('system:user:import')") + public CommonResult importExcel(@RequestParam("file") MultipartFile file, + @RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport) throws Exception { + List list = ExcelUtils.read(file, ProduceOrderImportExcelVO.class); + return success(produceOrderService.importList(list, updateSupport)); + } + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportExcelVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportExcelVO.java new file mode 100644 index 0000000..4a36024 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportExcelVO.java @@ -0,0 +1,85 @@ +package cn.hangtag.module.oms.controller.admin.produceorder.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.time.LocalDateTime; + +/** + * 用户 Excel 导入 VO + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = false) // 设置 chain = false,避免数据导入有问题 +public class ProduceOrderImportExcelVO { + + @ExcelProperty("单据编号") + private String billno; + + @ExcelProperty("订单号") + private String orderNo; + + @ExcelProperty("客户编号") + private String customerCode; + + @ExcelProperty("客户名称") + private String customerName; + + @ExcelProperty("产品编码") + private String productCode; + + @ExcelProperty("产品名称") + private String productName; + + @ExcelProperty("合约号") + private String saleContractNo; + + @ExcelProperty("合约日期") + private LocalDateTime contractDate; + + @ExcelProperty("合约数量") + private Long contractQty; + + @ExcelProperty("生产数量") + private Long produceQty; + + @ExcelProperty("交货地点") + private String deliveryPlace; + + @ExcelProperty("职员") + private String clerk; + + @ExcelProperty("报告日期") + private LocalDateTime reportDate; + + @ExcelProperty("生产日期") + private LocalDateTime produceDate; + + @ExcelProperty("天数") + private Long days; + + @ExcelProperty("生产线") + private String produceLine; + + @ExcelProperty("交货方式") + private String deliveryMethod; + + @ExcelProperty("验货日期") + private LocalDateTime inspectionDate; + + @Schema(description = "交货日期") + @ExcelProperty("交货日期") + private LocalDateTime deliverydate; + + @Schema(description = "交货数量") + @ExcelProperty("交货数量") + private Integer deliveryQty; + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportRespVO.java new file mode 100644 index 0000000..aabaa08 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderImportRespVO.java @@ -0,0 +1,24 @@ +package cn.hangtag.module.oms.controller.admin.produceorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Schema(description = "管理后台 - 生产制单导入 Response VO") +@Data +@Builder +public class ProduceOrderImportRespVO { + + @Schema(description = "创建成功的单据编号数组", requiredMode = Schema.RequiredMode.REQUIRED) + private List createBillNos; + + @Schema(description = "更新成功的单据编号数组", requiredMode = Schema.RequiredMode.REQUIRED) + private List updateBillNos; + + @Schema(description = "导入失败的单据编号集合,key 为用户名,value 为失败原因", requiredMode = Schema.RequiredMode.REQUIRED) + private Map failureBillNos; + +} diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java index 9d126f7..bbd8c82 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java @@ -25,7 +25,7 @@ public class ProduceOrderPageReqVO extends PageParam { private String customerCode; @Schema(description = "合约号") - private Integer saleContractNo; + private String saleContractNo; @Schema(description = "报告日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java index 44aecc8..1fe4cfe 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java @@ -34,7 +34,7 @@ public class ProduceOrderRespVO { @Schema(description = "合约号") @ExcelProperty("合约号") - private Integer saleContractNo; + private String saleContractNo; @Schema(description = "合约日期") @ExcelProperty("合约日期") diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java index 1cff71d..a7f5bc6 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java @@ -33,10 +33,10 @@ public class ProduceOrderSaveReqVO { private String productName; @Schema(description = "合约号") - private Integer saleContractNo; + private String saleContractNo; @Schema(description = "合约日期") - private Date contractDate; + private LocalDateTime contractDate; @Schema(description = "合约数量") private Long contractQty; @@ -51,10 +51,10 @@ public class ProduceOrderSaveReqVO { private String clerk; @Schema(description = "报告日期") - private Date reportDate; + private LocalDateTime reportDate; @Schema(description = "生产日期") - private Date produceDate; + private LocalDateTime produceDate; @Schema(description = "天数") private Long days; @@ -66,10 +66,10 @@ public class ProduceOrderSaveReqVO { private String deliveryMethod; @Schema(description = "验货日期") - private Date inspectionDate; + private LocalDateTime inspectionDate; @Schema(description = "交货日期") - private Date deliverydate; + private LocalDateTime deliverydate; @Schema(description = "交货数量") private Integer deliveryQty; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java index 303ba09..6cb39dd 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java @@ -63,11 +63,11 @@ public class ProduceOrderDO extends BaseDO { /** * 合约号 */ - private Integer saleContractNo; + private String saleContractNo; /** * 合约日期 */ - private LocalDateTime contractDate; + private Date contractDate; /** * 合约数量 */ @@ -87,11 +87,11 @@ public class ProduceOrderDO extends BaseDO { /** * 报告日期 */ - private LocalDateTime reportDate; + private Date reportDate; /** * 生产日期 */ - private LocalDateTime produceDate; + private Date produceDate; /** * 天数 */ @@ -107,11 +107,11 @@ public class ProduceOrderDO extends BaseDO { /** * 验货日期 */ - private LocalDateTime inspectionDate; + private Date inspectionDate; /** * 交货日期 */ - private LocalDateTime deliverydate; + private Date deliverydate; /** * 交货数量 */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java index e7f68ca..81ba170 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java @@ -32,4 +32,7 @@ public interface ProduceOrderMapper extends BaseMapperX { .orderByDesc(ProduceOrderDO::getId)); } + default ProduceOrderDO selectByBillNo(String billNo){ + return selectOne(ProduceOrderDO::getBillno, billNo); + } } \ 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/ProduceOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderService.java index f8871bf..93e7b05 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderService.java @@ -52,4 +52,5 @@ public interface ProduceOrderService { */ PageResult getProduceOrderPage(ProduceOrderPageReqVO pageReqVO); + ProduceOrderImportRespVO importList(List list, Boolean updateSupport); } \ 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 f34bcf3..91f2458 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 @@ -3,13 +3,21 @@ package cn.hangtag.module.oms.service.produceorder; 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.common.util.validation.ValidationUtils; import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; import cn.hangtag.module.oms.dal.dataobject.saleorder.SaleOrderDO; import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; +import cn.hangtag.module.system.controller.admin.user.vo.user.UserImportRespVO; +import cn.hangtag.module.system.controller.admin.user.vo.user.UserSaveReqVO; +import cn.hangtag.module.system.dal.dataobject.user.AdminUserDO; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.validation.ConstraintViolationException; + import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; @@ -86,7 +94,44 @@ public class ProduceOrderServiceImpl implements ProduceOrderService { return produceOrderMapper.selectPage(pageReqVO); } + @Override + public ProduceOrderImportRespVO importList(List importDatas, Boolean isUpdateSupport) { + // 1.1 参数校验 + if (CollUtil.isEmpty(importDatas)) { + throw exception(PRODUCE_ORDER_IMPORT_LIST_IS_EMPTY); + } + // 2. 遍历,逐个创建 or 更新 + ProduceOrderImportRespVO respVO = ProduceOrderImportRespVO.builder().createBillNos(new ArrayList<>()) + .updateBillNos(new ArrayList<>()).failureBillNos(new LinkedHashMap<>()).build(); + importDatas.forEach(importData -> { + // 2.1.1 校验字段是否符合要求 + try { + ValidationUtils.validate(BeanUtils.toBean(importData, ProduceOrderSaveReqVO.class)); + } catch (ConstraintViolationException ex){ + respVO.getFailureBillNos().put(importData.getBillno(), ex.getMessage()); + return; + } + + // 2.2.1 判断如果不存在,在进行插入 + ProduceOrderDO existData = produceOrderMapper.selectByBillNo(importData.getBillno()); + if (existData == null) { + produceOrderMapper.insert(BeanUtils.toBean(importData, ProduceOrderDO.class)); + respVO.getCreateBillNos().add(importData.getBillno()); + return; + } + // 2.2.2 如果存在,判断是否允许更新 + if (!isUpdateSupport) { + respVO.getFailureBillNos().put(importData.getBillno(), PRODUCE_ORDER_EXISTS.getMsg()); + return; + } + ProduceOrderDO updateData = BeanUtils.toBean(importData, ProduceOrderDO.class); + updateData.setId(existData.getId()); + produceOrderMapper.updateById(updateData); + respVO.getUpdateBillNos().add(importData.getBillno()); + }); + return respVO; + } private String getNewCode() { 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 d16d404..89b1d8d 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 @@ -1,23 +1,16 @@ package cn.hangtag.module.oms.service.saleorder; -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.object.BeanUtils; -import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; import cn.hangtag.module.oms.controller.admin.produceorder.vo.ProduceOrderSaveReqVO; 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.dal.dataobject.brand.BrandDO; 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.saleorder.SaleOrderStatusEnum; -import cn.hangtag.module.oms.serialnumber.CodingRulesUtils; import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -25,7 +18,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.Date; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -143,7 +136,7 @@ public class SaleOrderServiceImpl implements SaleOrderService { saveReqVO.setDeliveryQty(1111111); saveReqVO.setDays(5L); saveReqVO.setClerk("职员"); - saveReqVO.setContractDate(new Date()); + saveReqVO.setContractDate(LocalDateTime.now() ); Long produceOrderId = produceOrderService.createProduceOrder(saveReqVO); //更新销售订单已完成 /*if(produceOrderId!=null){ diff --git a/hangtag-ui/hangtag-ui-admin/index.html b/hangtag-ui/hangtag-ui-admin/index.html index 1ed3e88..b2323e4 100644 --- a/hangtag-ui/hangtag-ui-admin/index.html +++ b/hangtag-ui/hangtag-ui-admin/index.html @@ -3,6 +3,7 @@ + = 1.7.x' + '@commitlint/cli@19.4.0': resolution: {integrity: sha512-sJX4J9UioVwZHq7JWM9tjT5bgWYaIN3rC4FP7YwfEwBYiIO+wMyRttRvQLNkow0vCdM0D67r9NEWU0Ui03I4Eg==} engines: {node: '>=v18'} @@ -1599,6 +1610,9 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + '@swc/core-darwin-arm64@1.7.18': resolution: {integrity: sha512-MwLc5U+VGPMZm8MjlFBjEB2wyT1EK0NNJ3tn+ps9fmxdFP+PL8EpMiY1O1F2t1ydy2OzBtZz81sycjM9RieFBg==} engines: {node: '>=10'} @@ -1724,6 +1738,9 @@ packages: '@types/qs@6.9.15': resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + '@types/raf@3.4.3': + resolution: {integrity: sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==} + '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -2348,6 +2365,10 @@ packages: balanced-match@2.0.0: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + base@0.11.2: resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} engines: {node: '>=0.10.0'} @@ -2411,9 +2432,18 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + btoa@1.2.1: + resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} + engines: {node: '>= 0.4.0'} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + bwip-js@4.5.1: + resolution: {integrity: sha512-83yQCKiIftz5YonnsTh6wIkFoHHWl+B/XaGWD1UdRw7aB6XP9JtyYP9n8sRy3m5rzL+Ch/RUPnu28UW0RrPZUA==} + hasBin: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -2444,6 +2474,10 @@ packages: caniuse-lite@1.0.30001653: resolution: {integrity: sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==} + canvg@3.0.10: + resolution: {integrity: sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==} + engines: {node: '>=10.0.0'} + chalk@1.1.3: resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} engines: {node: '>=0.10.0'} @@ -2646,6 +2680,9 @@ packages: resolution: {integrity: sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==} engines: {node: '>=12 || >=16'} + css-line-break@2.1.0: + resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -2826,6 +2863,9 @@ packages: domify@1.4.2: resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==} + dompurify@2.5.6: + resolution: {integrity: sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==} + dompurify@3.1.6: resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==} @@ -2885,6 +2925,13 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} + engine.io-client@6.5.4: + resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + entities@1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} @@ -3114,6 +3161,9 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -3384,6 +3434,10 @@ packages: html-void-elements@2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + html2canvas@1.4.1: + resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} + engines: {node: '>=8.0.0'} + htmlparser2@3.10.1: resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} @@ -3647,6 +3701,9 @@ packages: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true + jquery@3.7.1: + resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + js-base64@2.6.4: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} @@ -3660,6 +3717,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbarcode@3.11.6: + resolution: {integrity: sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==} + jsencrypt@3.3.2: resolution: {integrity: sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==} @@ -3710,6 +3770,9 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + jspdf@2.5.1: + resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==} + keycode@2.2.1: resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==} @@ -4073,6 +4136,9 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nzh@1.0.13: + resolution: {integrity: sha512-K3npIPUq155Oqal3KHZZ8fjiAiBw3NOGcdisTbxr0KQ4N1xlqgsMwzJ1a/oagcsl7f1FWnFh56MSS15fqvCF+Q==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -4214,6 +4280,9 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -4399,6 +4468,9 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + rd@2.0.1: resolution: {integrity: sha512-/XdKU4UazUZTXFmI0dpABt8jSXPWcEyaGdk340KdHnsEOdkTctlX23aAK7ChQDn39YGNlAJr1M5uvaKt4QnpNw==} @@ -4420,6 +4492,9 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -4495,6 +4570,10 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rgbcolor@1.0.1: + resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==} + engines: {node: '>= 0.8.15'} + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -4648,6 +4727,14 @@ packages: resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} engines: {node: '>=0.10.0'} + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + sortablejs@1.14.0: resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} @@ -4689,6 +4776,10 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + stackblur-canvas@2.7.0: + resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==} + engines: {node: '>=0.1.14'} + static-extend@0.1.2: resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} engines: {node: '>=0.10.0'} @@ -4813,6 +4904,10 @@ packages: svg-baker@1.7.0: resolution: {integrity: sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==} + svg-pathdata@6.0.3: + resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} + engines: {node: '>=12.0.0'} + svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} @@ -4848,6 +4943,9 @@ packages: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} + text-segmentation@1.0.3: + resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -5068,6 +5166,9 @@ packages: resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} engines: {node: '>= 4'} + utrie@1.0.2: + resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + uuid@10.0.0: resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} hasBin: true @@ -5179,6 +5280,9 @@ packages: peerDependencies: vue: ^3.0.0 + vue-plugin-hiprint@0.0.56: + resolution: {integrity: sha512-YbJHH/MwdwIV1urL8V86ea+E8ixX1RYp/u/8/giPt4vfREUak9s2KYw4JFzM/Z6th9BCCpWTLPC+SOeoggxBbw==} + vue-router@4.4.3: resolution: {integrity: sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A==} peerDependencies: @@ -5283,6 +5387,18 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-js@1.6.11: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true @@ -5291,6 +5407,10 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -6226,6 +6346,10 @@ snapshots: '@camunda/element-templates-json-schema@0.4.0': {} + '@claviska/jquery-minicolors@2.3.6(jquery@3.7.1)': + dependencies: + jquery: 3.7.1 + '@commitlint/cli@19.4.0(@types/node@20.16.1)(typescript@5.3.3)': dependencies: '@commitlint/format': 19.3.0 @@ -6762,6 +6886,8 @@ snapshots: '@sinclair/typebox@0.27.8': {} + '@socket.io/component-emitter@3.1.2': {} + '@swc/core-darwin-arm64@1.7.18': optional: true @@ -6855,6 +6981,8 @@ snapshots: '@types/qs@6.9.15': {} + '@types/raf@3.4.3': {} + '@types/semver@7.5.8': {} '@types/svgo@2.6.4': @@ -7728,6 +7856,8 @@ snapshots: balanced-match@2.0.0: {} + base64-arraybuffer@1.0.2: {} + base@0.11.2: dependencies: cache-base: 1.0.1 @@ -7830,8 +7960,12 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + btoa@1.2.1: {} + buffer-from@1.1.2: {} + bwip-js@4.5.1: {} + cac@6.7.14: {} cache-base@1.0.1: @@ -7864,6 +7998,17 @@ snapshots: caniuse-lite@1.0.30001653: {} + canvg@3.0.10: + dependencies: + '@babel/runtime': 7.25.4 + '@types/raf': 3.4.3 + core-js: 3.38.1 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + rgbcolor: 1.0.1 + stackblur-canvas: 2.7.0 + svg-pathdata: 6.0.3 + chalk@1.1.3: dependencies: ansi-styles: 2.2.1 @@ -8071,6 +8216,10 @@ snapshots: css-functions-list@3.2.2: {} + css-line-break@2.1.0: + dependencies: + utrie: 1.0.2 + css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -8263,6 +8412,9 @@ snapshots: domify@1.4.2: {} + dompurify@2.5.6: + optional: true + dompurify@3.1.6: {} domutils@1.7.0: @@ -8336,6 +8488,20 @@ snapshots: emojis-list@3.0.0: {} + engine.io-client@6.5.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 + engine.io-parser: 5.2.3 + ws: 8.17.1 + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + entities@1.1.2: {} entities@2.2.0: {} @@ -8685,6 +8851,8 @@ snapshots: dependencies: reusify: 1.0.4 + fflate@0.4.8: {} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 @@ -8956,6 +9124,11 @@ snapshots: html-void-elements@2.0.1: {} + html2canvas@1.4.1: + dependencies: + css-line-break: 2.1.0 + text-segmentation: 1.0.3 + htmlparser2@3.10.1: dependencies: domelementtype: 1.3.1 @@ -9186,6 +9359,8 @@ snapshots: jiti@1.21.6: {} + jquery@3.7.1: {} + js-base64@2.6.4: {} js-tokens@4.0.0: {} @@ -9196,6 +9371,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbarcode@3.11.6: {} + jsencrypt@3.3.2: {} jsesc@0.5.0: {} @@ -9235,6 +9412,18 @@ snapshots: jsonparse@1.3.1: {} + jspdf@2.5.1: + dependencies: + '@babel/runtime': 7.25.4 + atob: 2.1.2 + btoa: 1.2.1 + fflate: 0.4.8 + optionalDependencies: + canvg: 3.0.10 + core-js: 3.38.1 + dompurify: 2.5.6 + html2canvas: 1.4.1 + keycode@2.2.1: {} keyv@4.5.4: @@ -9601,6 +9790,8 @@ snapshots: dependencies: boolbase: 1.0.0 + nzh@1.0.13: {} + object-assign@4.1.1: {} object-copy@0.1.0: @@ -9729,6 +9920,8 @@ snapshots: perfect-debounce@1.0.0: {} + performance-now@2.1.0: {} + picocolors@1.0.1: {} picomatch@2.3.1: {} @@ -9897,6 +10090,10 @@ snapshots: queue-microtask@1.2.3: {} + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + rd@2.0.1: dependencies: '@types/node': 10.17.60 @@ -9919,6 +10116,8 @@ snapshots: regenerate@1.4.2: {} + regenerator-runtime@0.13.11: {} + regenerator-runtime@0.14.1: {} regenerator-transform@0.15.2: @@ -9985,6 +10184,8 @@ snapshots: rfdc@1.4.1: {} + rgbcolor@1.0.1: {} + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -10186,6 +10387,24 @@ snapshots: transitivePeerDependencies: - supports-color + socket.io-client@4.7.5: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 + engine.io-client: 6.5.4 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 + transitivePeerDependencies: + - supports-color + sortablejs@1.14.0: {} source-map-js@1.2.0: {} @@ -10219,6 +10438,8 @@ snapshots: stable@0.1.8: {} + stackblur-canvas@2.7.0: {} + static-extend@0.1.2: dependencies: define-property: 0.2.5 @@ -10397,6 +10618,8 @@ snapshots: transitivePeerDependencies: - supports-color + svg-pathdata@6.0.3: {} + svg-tags@1.0.0: {} svg.js@2.7.1: {} @@ -10440,6 +10663,10 @@ snapshots: text-extensions@2.4.0: {} + text-segmentation@1.0.3: + dependencies: + utrie: 1.0.2 + text-table@0.2.0: {} through@2.3.8: {} @@ -10709,6 +10936,10 @@ snapshots: utility-types@3.11.0: {} + utrie@1.0.2: + dependencies: + base64-arraybuffer: 1.0.2 + uuid@10.0.0: {} vary@1.1.2: {} @@ -10841,6 +11072,22 @@ snapshots: '@vue/devtools-api': 6.6.3 vue: 3.4.21(typescript@5.3.3) + vue-plugin-hiprint@0.0.56: + dependencies: + '@claviska/jquery-minicolors': 2.3.6(jquery@3.7.1) + bwip-js: 4.5.1 + canvg: 3.0.10 + html2canvas: 1.4.1 + jquery: 3.7.1 + jsbarcode: 3.11.6 + jspdf: 2.5.1 + nzh: 1.0.13 + socket.io-client: 4.7.5 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + vue-router@4.4.3(vue@3.4.21(typescript@5.3.3)): dependencies: '@vue/devtools-api': 6.6.3 @@ -10959,12 +11206,16 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@8.17.1: {} + xml-js@1.6.11: dependencies: sax: 1.4.1 xml-name-validator@4.0.0: {} + xmlhttprequest-ssl@2.0.0: {} + y18n@4.0.3: {} y18n@5.0.8: {} diff --git a/hangtag-ui/hangtag-ui-admin/public/print-lock.css b/hangtag-ui/hangtag-ui-admin/public/print-lock.css new file mode 100644 index 0000000..aede018 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/public/print-lock.css @@ -0,0 +1,349 @@ +@media print { + body { + margin: 0px; + padding: 0px; + } +} + +@page { + margin: 0; +} + +.hiprint-printPaper * { + box-sizing: border-box; + -moz-box-sizing: border-box; /* Firefox */ + -webkit-box-sizing: border-box; /* Safari */ +} + +.hiprint-printPaper *:focus { + outline: -webkit-focus-ring-color auto 0px; +} + +.hiprint-printPaper { + position: relative; + padding: 0 0 0 0; + page-break-after: always; + -webkit-user-select: none; /* Chrome/Safari/Opera */ + -moz-user-select: none; /* Firefox */ + user-select: none; + overflow-x: hidden; + overflow: hidden; +} + +.hiprint-printPaper .hiprint-printPaper-content { + position: relative; +} + +/* 火狐浏览器打印 第一页过后 重叠问题 */ +@-moz-document url-prefix() { + .hiprint-printPaper .hiprint-printPaper-content { + position: relative; + margin-top: 20px; + top: -20px + } +} + +.hiprint-printPaper.design { + overflow: visible; +} + + +.hiprint-printTemplate .hiprint-printPanel { + page-break-after: always; +} + +.hiprint-printPaper, hiprint-printPanel { + box-sizing: border-box; + border: 0px; +} + +.hiprint-printPanel .hiprint-printPaper:last-child { + page-break-after: avoid; +} + +.hiprint-printTemplate .hiprint-printPanel:last-child { + page-break-after: avoid; +} + +.hiprint-printPaper .hideheaderLinetarget { + border-top: 0px dashed rgb(201, 190, 190) !important; +} + +.hiprint-printPaper .hidefooterLinetarget { + border-top: 0px dashed rgb(201, 190, 190) !important; +} + +.hiprint-printPaper.design { + border: 1px dashed rgba(170, 170, 170, 0.7); +} + +.design .hiprint-printElement-table-content, .design .hiprint-printElement-longText-content { + overflow: hidden; + box-sizing: border-box; +} + +.design .resize-panel { + box-sizing: border-box; + border: 1px dotted; +} + +.hiprint-printElement-text { + background-color: transparent; + background-repeat: repeat; + padding: 0 0 0 0; + border: 0.75pt none rgb(0, 0, 0); + direction: ltr; + font-family: 'SimSun'; + font-size: 9pt; + font-style: normal; + font-weight: normal; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-align: left; + text-decoration: none; + line-height: 9.75pt; + box-sizing: border-box; + word-wrap: break-word; + word-break: break-all; +} + +.design .hiprint-printElement-text-content { + border: 1px dashed rgb(206, 188, 188); + box-sizing: border-box; +} + +.hiprint-printElement-longText { + background-color: transparent; + background-repeat: repeat; + border: 0.75pt none rgb(0, 0, 0); + direction: ltr; + font-family: 'SimSun'; + font-size: 9pt; + font-style: normal; + font-weight: normal; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-align: left; + text-decoration: none; + line-height: 9.75pt; + box-sizing: border-box; + word-wrap: break-word; + word-break: break-all; + /*white-space: pre-wrap*/ +} + + +.hiprint-printElement-table { + background-color: transparent; + background-repeat: repeat; + color: rgb(0, 0, 0); + border-color: rgb(0, 0, 0); + border-style: none; + direction: ltr; + font-family: 'SimSun'; + font-size: 9pt; + font-style: normal; + font-weight: normal; + padding-bottom: 0pt; + padding-left: 0pt; + padding-right: 0pt; + padding-top: 0pt; + text-align: left; + text-decoration: none; + padding: 0 0 0 0; + box-sizing: border-box; + line-height: 9.75pt; +} + +.hiprint-printElement-table thead { + background: #e8e8e8; + font-weight: 700; +} + +table.hiprint-printElement-tableTarget { + width: 100%; +} + +.hiprint-printElement-tableTarget, .hiprint-printElement-tableTarget tr, .hiprint-printElement-tableTarget td { + border-color: rgb(0, 0, 0); + /*border-style: none;*/ + /*border: 1px solid rgb(0, 0, 0);*/ + font-weight: normal; + direction: ltr; + padding-bottom: 0pt; + padding-left: 4pt; + padding-right: 4pt; + padding-top: 0pt; + text-decoration: none; + vertical-align: middle; + box-sizing: border-box; + word-wrap: break-word; + word-break: break-all; + /*line-height: 9.75pt; + font-size: 9pt;*/ +} + +.hiprint-printElement-tableTarget-border-all { + border: 1px solid; +} +.hiprint-printElement-tableTarget-border-none { + border: 0px solid; +} +.hiprint-printElement-tableTarget-border-lr { + border-left: 1px solid; + border-right: 1px solid; +} +.hiprint-printElement-tableTarget-border-left { + border-left: 1px solid; +} +.hiprint-printElement-tableTarget-border-right { + border-right: 1px solid; +} +.hiprint-printElement-tableTarget-border-tb { + border-top: 1px solid; + border-bottom: 1px solid; +} +.hiprint-printElement-tableTarget-border-top { + border-top: 1px solid; +} +.hiprint-printElement-tableTarget-border-bottom { + border-bottom: 1px solid; +} + +.hiprint-printElement-tableTarget-border-td-none td { + border: 0px solid; +} +.hiprint-printElement-tableTarget-border-td-all td:not(:nth-last-child(-n+2)) { + border-right: 1px solid; +} +.hiprint-printElement-tableTarget-border-td-all td:last-child { + border-left: 1px solid; +} +.hiprint-printElement-tableTarget-border-td-all td:last-child:first-child { + border-left: none; +} + +/*.hiprint-printElement-tableTarget tr,*/ +.hiprint-printElement-tableTarget td { + height: 18pt; +} + +.hiprint-printPaper .hiprint-paperNumber { + font-size: 9pt; +} + +.design .hiprint-printElement-table-handle { + position: absolute; + height: 21pt; + width: 21pt; + background: red; + z-index: 1; +} + +.hiprint-printPaper .hiprint-paperNumber-disabled { + float: right !important; + right: 0 !important; + color: gainsboro !important; +} + +.hiprint-printElement-vline, .hiprint-printElement-hline { + border: 0px none rgb(0, 0, 0); + +} + +.hiprint-printElement-vline { + border-left: 0.75pt solid #000; + border-right: 0px none rgb(0, 0, 0) !important; + border-bottom: 0px none rgb(0, 0, 0) !important; + border-top: 0px none rgb(0, 0, 0) !important; +} + +.hiprint-printElement-hline { + border-top: 0.75pt solid #000; + border-right: 0px none rgb(0, 0, 0) !important; + border-bottom: 0px none rgb(0, 0, 0) !important; + border-left: 0px none rgb(0, 0, 0) !important; +} + +.hiprint-printElement-oval, .hiprint-printElement-rect { + border: 0.75pt solid #000; +} + +.hiprint-text-content-middle { +} + +.hiprint-text-content-middle > div { + display: grid; + align-items: center; +} + +.hiprint-text-content-bottom { +} + +.hiprint-text-content-bottom > div { + display: grid; + align-items: flex-end; +} + +.hiprint-text-content-wrap { +} + +.hiprint-text-content-wrap .hiprint-text-content-wrap-nowrap { + white-space: nowrap; +} + +.hiprint-text-content-wrap .hiprint-text-content-wrap-clip { + white-space: nowrap; + overflow: hidden; + text-overflow: clip; +} + +.hiprint-text-content-wrap .hiprint-text-content-wrap-ellipsis { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +/*hi-grid-row */ +.hi-grid-row { + position: relative; + height: auto; + margin-right: 0; + margin-left: 0; + zoom: 1; + display: block; + box-sizing: border-box; +} + +.hi-grid-row::after, .hi-grid-row::before { + display: table; + content: ''; + box-sizing: border-box; +} + +.hi-grid-col { + display: block; + box-sizing: border-box; + position: relative; + float: left; + flex: 0 0 auto; +} + +.table-grid-row { + margin-left: -0pt; + margin-right: -0pt; +} + +.tableGridColumnsGutterRow { + padding-left: 0pt; + padding-right: 0pt; +} + +.hiprint-gridColumnsFooter { + text-align: left; + clear: both; +} 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 c3099f5..55a37c8 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 @@ -1,59 +1,64 @@ -import request from '@/config/axios' - -// 生产制单 VO -export interface ProduceOrderVO { - id: number // ID - billno: string // 单据编号 - orderNo: string // 订单号 - customerCode: string // 客户编号 - productId: number // 产品id - productCode: string // 产品编号 - productName: string // 产品名称 - saleContractNo: number // 合约号 - contractDate: Date // 合约日期 - contractQty: number // 合约数量 - produceQty: number // 生产数量 - deliveryPlace: string // 交货地点 - clerk: string // 职员 - reportDate: Date // 报告日期 - produceDate: Date // 生产日期 - days: number // 天数 - produceLine: string // 生产线 - deliveryMethod: string // 交货方式 - inspectionDate: Date // 验货日期 - deliverydate: Date // 交货日期 - deliveryQty: number // 交货数量 -} - -// 生产制单 API -export const ProduceOrderApi = { - // 查询生产制单分页 - getProduceOrderPage: async (params: any) => { - return await request.get({ url: `/oms/produce-order/page`, params }) - }, - - // 查询生产制单详情 - getProduceOrder: async (id: number) => { - return await request.get({ url: `/oms/produce-order/get?id=` + id }) - }, - - // 新增生产制单 - createProduceOrder: async (data: ProduceOrderVO) => { - return await request.post({ url: `/oms/produce-order/create`, data }) - }, - - // 修改生产制单 - updateProduceOrder: async (data: ProduceOrderVO) => { - return await request.put({ url: `/oms/produce-order/update`, data }) - }, - - // 删除生产制单 - deleteProduceOrder: async (id: number) => { - return await request.delete({ url: `/oms/produce-order/delete?id=` + id }) - }, - - // 导出生产制单 Excel - exportProduceOrder: async (params) => { - return await request.download({ url: `/oms/produce-order/export-excel`, params }) - }, -} \ No newline at end of file +import request from '@/config/axios' + +// 生产制单 VO +export interface ProduceOrderVO { + id: number // ID + billno: string // 单据编号 + orderNo: string // 订单号 + customerCode: string // 客户编号 + productId: number // 产品id + productCode: string // 产品编号 + productName: string // 产品名称 + saleContractNo: number // 合约号 + contractDate: Date // 合约日期 + contractQty: number // 合约数量 + produceQty: number // 生产数量 + deliveryPlace: string // 交货地点 + clerk: string // 职员 + reportDate: Date // 报告日期 + produceDate: Date // 生产日期 + days: number // 天数 + produceLine: string // 生产线 + deliveryMethod: string // 交货方式 + inspectionDate: Date // 验货日期 + deliverydate: Date // 交货日期 + deliveryQty: number // 交货数量 +} + +// 生产制单 API +export const ProduceOrderApi = { + // 查询生产制单分页 + getProduceOrderPage: async (params: any) => { + return await request.get({ url: `/oms/produce-order/page`, params }) + }, + + // 查询生产制单详情 + getProduceOrder: async (id: number) => { + return await request.get({ url: `/oms/produce-order/get?id=` + id }) + }, + + // 新增生产制单 + createProduceOrder: async (data: ProduceOrderVO) => { + return await request.post({ url: `/oms/produce-order/create`, data }) + }, + + // 修改生产制单 + updateProduceOrder: async (data: ProduceOrderVO) => { + return await request.put({ url: `/oms/produce-order/update`, data }) + }, + + // 删除生产制单 + deleteProduceOrder: async (id: number) => { + return await request.delete({ url: `/oms/produce-order/delete?id=` + id }) + }, + + // 导出生产制单 Excel + exportProduceOrder: async (params) => { + return await request.download({ url: `/oms/produce-order/export-excel`, params }) + }, + + importTemplate: async (params) => { + return request.download({ url: '/oms/produce-order/get-import-template' }) + } + +} diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderImportForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderImportForm.vue new file mode 100644 index 0000000..6cb65d3 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/ProduceOrderImportForm.vue @@ -0,0 +1,138 @@ + + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/components/preview.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/components/preview.vue new file mode 100644 index 0000000..8d8193f --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/components/preview.vue @@ -0,0 +1,63 @@ + + + + + + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue index 3352596..b615143 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue @@ -114,6 +114,13 @@ + + 打印 + 新增 + + 导入 + 导出 + + + + - - - - + + + + + - +