From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:22:45 +0800
Subject: [PATCH] 描述
---
src/main/java/com/gk/firework/Service/ServiceImpl/ContractOrderServiceImpl.java | 774 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 774 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gk/firework/Service/ServiceImpl/ContractOrderServiceImpl.java b/src/main/java/com/gk/firework/Service/ServiceImpl/ContractOrderServiceImpl.java
new file mode 100644
index 0000000..3c288d8
--- /dev/null
+++ b/src/main/java/com/gk/firework/Service/ServiceImpl/ContractOrderServiceImpl.java
@@ -0,0 +1,774 @@
+package com.gk.firework.Service.ServiceImpl;
+import com.gk.firework.Domain.ContractFile;
+
+import com.alibaba.fastjson.JSONArray;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gk.firework.Domain.*;
+import com.gk.firework.Domain.Enum.EnterpriseSafetySupervision;
+import com.gk.firework.Domain.Exception.BusinessException;
+import com.gk.firework.Domain.Utils.PageInfo;
+import com.gk.firework.Domain.Utils.Properties;
+import com.gk.firework.Domain.Utils.StringUtils;
+import com.gk.firework.Domain.Utils.UploadUtil;
+import com.gk.firework.Domain.Vo.*;
+import com.gk.firework.Mapper.ContractDetailInfoMapper;
+import com.gk.firework.Mapper.ContractOrderInfoMapper;
+import com.gk.firework.Service.*;
+import org.apache.commons.lang3.time.DateFormatUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@Service("ContractOrderService")
+public class ContractOrderServiceImpl extends ServiceImpl<ContractOrderInfoMapper, ContractOrderInfo> implements ContractOrderService {
+ @Autowired
+ ContractOrderInfoMapper contractOrderInfoMapper;
+ @Autowired
+ ContractDetailInfoMapper contractDetailInfoMapper;
+ @Autowired
+ ContractFileService contractFileService;
+ @Autowired
+ ContractDetailService contractDetailService;
+ @Autowired
+ ContractLogService contractLogService;
+ @Autowired
+ UserService userService;
+ @Autowired
+ EnterpriseService enterpriseService;
+ @Autowired
+ ProductCodeService productCodeService;
+ @Autowired
+ ProductLocusService productLocusService;
+ @Autowired
+ ProductService productService;
+ @Autowired
+ ExcelExportService excelExportService;
+ @Autowired
+ ControlPrintParamService controlPrintParamService;
+
+ @Override
+ public void selectDataGrid(PageInfo pageInfo) {
+ Page<ContractOrderVo> page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize());
+ List<OrderItem> orderItems = new ArrayList<>();
+ OrderItem orderItem = new OrderItem();
+ if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) {
+ orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending"));
+ orderItem.setColumn(pageInfo.getSort());
+ }else {
+ orderItem.setAsc(false);
+ orderItem.setColumn("createddate");
+ }
+ orderItems.add(orderItem);
+ page.setOrders(orderItems);
+ List<ContractOrderVo> list = contractOrderInfoMapper.selectDataGrid(page,pageInfo.getCondition());
+ for (ContractOrderVo contractOrderVo : list) {
+ List<ProductVo> productVoList = contractDetailInfoMapper.selectByOrder(contractOrderVo.getOrdercode());
+ ContractFile contractFile = contractFileService.selectByOrderCode(contractOrderVo.getOrdercode());
+ contractOrderVo.setProductInfoList(productVoList);
+ contractOrderVo.setContractFile(contractFile);
+ }
+ pageInfo.setResult(list);
+ pageInfo.setTotalCount(page.getTotal());
+ }
+
+ @Override
+ public List<ContractOrderInfo> selectByStatus(String status, String now) {
+ return contractOrderInfoMapper.selectByStatus(status,now);
+ }
+
+ @Override
+ public ContractOrderInfo selectByOrderCode(String ordercode) {
+ return contractOrderInfoMapper.selectByOrderCode(ordercode);
+ }
+
+ @Override
+ @Transactional
+ public void addApply(ContractOrderVo contractOrderVo, UserInfo user) {
+
+
+ UserInfo userInfo = userService.getById(user.getId());
+ if (StringUtils.isBlank(userInfo.getCompanynumber())) {
+ throw new BusinessException("没有权限新增");
+ }
+ Enterprise enterprise = enterpriseService.selectEnterpriseByNumber(userInfo.getCompanynumber());
+ assert enterprise.getSafetysupervision() != null;
+ if (enterprise.getSafetysupervision().equals(EnterpriseSafetySupervision.PRODUCE.getMsg())) {
+ throw new BusinessException("生产企业不可以申请合同");
+ }
+ //单号
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String ordercode = "CT"+sdf.format(new Date());
+ String operator = user.getUsername();
+ //规律的单号
+ String regularCode = this.generateRegularCode();
+
+
+ JSONArray jsonArray = JSONArray.parseArray(contractOrderVo.getProductList());
+ List<ContractDetailInfo> contractDetails = jsonArray.toJavaList(ContractDetailInfo.class);
+ if (contractDetails.size() <1) throw new BusinessException("产品不能为空");
+ //上传附件
+ MultipartFile file = contractOrderVo.getFile();
+ if (file != null ) {
+ try {
+ ContractFile attachment = new ContractFile();
+ String name = UploadUtil.uploadFile(file, Properties.contractPath);
+ attachment.setValidflag(true);
+ attachment.setOrdercode(ordercode);
+ attachment.setFilename(file.getOriginalFilename());
+ attachment.setUrl(Properties.contract + name);
+ attachment.setCreateby(user.getId());
+ attachment.setCreatebyname(user.getUsername());
+ attachment.setCreatetime(new Date());
+ contractFileService.save(attachment);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new BusinessException("上传文件失败");
+ }
+ }
+ //甲方单位编号
+ contractOrderVo.setPurchaseenterprisenumber(userInfo.getCompanynumber());
+ contractOrderVo.setRegularcode(regularCode);
+ contractOrderVo.setOrdercode(ordercode);
+ contractOrderVo.setStatus(ContractStatus.WAIT_SUBMIT);
+ contractOrderVo.setOperator(operator);
+ contractOrderVo.setCreatedby(operator);
+ contractOrderVo.setCreateddate(new Date());
+ contractOrderVo.setModifiedby(operator);
+ contractOrderVo.setModifieddate(new Date());
+ contractOrderVo.setIsdel((byte)0);
+ contractOrderVo.setManufacturer(contractOrderVo.getSupplyunitname());
+ this.save(contractOrderVo);
+
+ if (contractDetails.size() > 0) {
+ for (ContractDetailInfo contractDetail : contractDetails) {
+ ProductInfo productInfo = productService.selectByDirection(contractDetail.getDirectioncode());
+ if (productInfo == null) {
+ throw new BusinessException(String.format("产品不存在,流向码:%s", contractDetail.getName()));
+ }
+ if (contractDetail.getNum() == null) {
+ throw new BusinessException(String.format("请输入%s"+"的产品数量",contractDetail.getName()));
+ }
+ if (contractDetail.getPrice() == null) {
+ throw new BusinessException(String.format("请输入%s"+"的进货单价",contractDetail.getName()));
+ }
+ contractDetail.setOrdercode(ordercode);
+ contractDetailService.save(contractDetail);
+ }
+ }
+ ContractLogInfo contractLogInfo = new ContractLogInfo();
+ contractLogInfo.setOptlog("新增合同");
+ contractLogInfo.setOperator(operator);
+ contractLogInfo.setOrdercode(ordercode);
+ contractLogInfo.setOperatordate(new Date());
+ contractLogService.save(contractLogInfo);
+ }
+
+ @Override
+ @Transactional
+ public void putApply(ContractOrderVo contractOrderVo, UserInfo user) {
+
+ UserInfo userInfo = userService.getById(user.getId());
+ if (StringUtils.isBlank(userInfo.getCompanynumber())) {
+ throw new BusinessException("没有权限修改");
+ }
+ String operator = user.getUsername();
+ JSONArray jsonArray = JSONArray.parseArray(contractOrderVo.getProductList());
+ List<ContractDetailInfo> contractDetails = jsonArray.toJavaList(ContractDetailInfo.class);
+ if (contractDetails.size() <1) throw new BusinessException("产品不能为空");
+
+ ContractOrderInfo contractOrderInfo = this.getById(contractOrderVo.getId());
+ if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_SUBMIT) &&
+ !contractOrderInfo.getStatus().equals(ContractStatus.Refuse_Product)){
+ throw new BusinessException("合同状态不为待提交、拒绝生产,无法修改");
+ }
+ //上传附件
+ MultipartFile file = contractOrderVo.getFile();
+ if (file != null ) {
+ try {
+ contractFileService.deleteAll(contractOrderVo.getOrdercode());
+ ContractFile attachment = new ContractFile();
+ String name = UploadUtil.uploadFile(file, Properties.contractPath);
+ attachment.setValidflag(true);
+ attachment.setOrdercode(contractOrderVo.getOrdercode());
+ attachment.setFilename(file.getOriginalFilename());
+ attachment.setUrl(Properties.contract + name);
+ attachment.setCreateby(user.getId());
+ attachment.setCreatebyname(user.getUsername());
+ attachment.setCreatetime(new Date());
+ contractFileService.save(attachment);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new BusinessException("上传文件失败");
+ }
+ }
+
+ contractOrderVo.setManufacturer(contractOrderVo.getSupplyunitname());
+ this.updateById(contractOrderVo);
+
+ if (contractDetails != null && contractDetails.size() > 0) {
+ contractDetailService.deleteByOrder(contractOrderInfo.getOrdercode());
+ for (ContractDetailInfo contractDetail : contractDetails) {
+ if (contractDetail.getNum() == null) {
+ throw new BusinessException(String.format("请输入%s"+"的产品数量",contractDetail.getName()));
+ }
+ if (contractDetail.getPrice() == null) {
+ throw new BusinessException(String.format("请输入%s"+"的进货单价",contractDetail.getName()));
+ }
+ contractDetail.setOrdercode(contractOrderVo.getOrdercode());
+ contractDetailService.save(contractDetail);
+ }
+ }
+
+ ContractLogInfo contractLogInfo = new ContractLogInfo();
+ contractLogInfo.setOptlog("修改合同");
+ contractLogInfo.setOperator(operator);
+ contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode());
+ contractLogInfo.setOperatordate(new Date());
+ contractLogService.save(contractLogInfo);
+
+ }
+
+ @Override
+ @Transactional
+ public void confirmProduct(ContractOrderVo contractOrderVo, UserInfo user) {
+
+ String operator = user.getUsername();
+ ContractOrderInfo contractOrderInfo = this.getById(contractOrderVo.getId());
+ //上传附件
+ MultipartFile file = contractOrderVo.getFile();
+ if (file != null ) {
+ try {
+ ContractFile attachment = new ContractFile();
+ String name = UploadUtil.uploadFile(file, Properties.contractPath);
+ attachment.setValidflag(true);
+ attachment.setFilename(file.getOriginalFilename());
+ attachment.setUrl(Properties.contract + name);
+ attachment.setCreateby(user.getId());
+ attachment.setCreatebyname(user.getUsername());
+ attachment.setCreatetime(new Date());
+ contractFileService.save(attachment);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new BusinessException("上传文件失败");
+ }
+ }
+
+ if (!contractOrderInfo.getStatus().equals(ContractStatus.WAIT_CONFIRM)) {
+ throw new BusinessException("合同状态不为待确认,无法确认生产");
+ }
+
+ contractOrderInfo.setStatus(ContractStatus.Confirm_Product);
+ contractOrderInfo.setModifiedby(operator);
+ contractOrderInfo.setModifieddate(new Date());
+ contractOrderInfo.setReturnstatus("未退回");
+ contractOrderInfo.setSupplyunitaddress(contractOrderVo.getSupplyunitaddress());
+ contractOrderInfo.setSupplyrepresentative(contractOrderVo.getSupplyrepresentative());
+ contractOrderInfo.setSupplyrepresentativephone(contractOrderVo.getSupplyrepresentativephone());
+ contractOrderInfo.setSupplybank(contractOrderVo.getSupplybank());
+ contractOrderInfo.setSupplylicensenumber(contractOrderVo.getSupplylicensenumber());
+ contractOrderInfo.setSupplyzipcode(contractOrderVo.getSupplyzipcode());
+ contractOrderInfo.setSupplyagent(contractOrderVo.getSupplyagent());
+ contractOrderInfo.setSupplyagentphone(contractOrderVo.getSupplyagentphone());
+ contractOrderInfo.setSupplyagentemail(contractOrderVo.getSupplyagentemail());
+ contractOrderInfo.setSupplyaccount(contractOrderVo.getSupplyaccount());
+ this.updateById(contractOrderInfo);
+
+ ContractLogInfo contractLogInfo = new ContractLogInfo();
+ contractLogInfo.setOptlog("确认合同");
+ contractLogInfo.setOperator(operator);
+ contractLogInfo.setOrdercode(contractOrderInfo.getOrdercode());
+ contractLogInfo.setOperatordate(new Date());
+ contractLogService.save(contractLogInfo);
+ }
+
+ /**
+ * @Description: 申请校验
+ * @date 2021/5/11 13:55
+ */
+ @Override
+ public void checkAdd(ContractOrderVo contractOrderVo) {
+ if (StringUtils.isBlank(contractOrderVo.getSignlocation())) {
+ throw new BusinessException("签订地点不能为空");
+ }
+
+ if (contractOrderVo.getSigntime() == null) {
+ throw new BusinessException("签订时间不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getProductList())) {
+ throw new BusinessException("产品列表不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyenterprisenumber())
+ || StringUtils.isBlank(contractOrderVo.getSupplyunitname())) {
+ throw new BusinessException("生产企业不能为空");
+ }
+
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaseunitaddress())) {
+ throw new BusinessException("供货单位地址不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaserepresentative())) {
+ throw new BusinessException("供货单位法定代表人联系电话不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaserepresentativeemail())) {
+ throw new BusinessException("供货单位法定代表人电子邮箱不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchasebank())) {
+ throw new BusinessException("供货单位开户银行不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaselicensenumber())) {
+ throw new BusinessException("供货单位许可证编号不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchasezipcode())) {
+ throw new BusinessException("供货单位许可证编号不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaseagent())) {
+ throw new BusinessException("供货单位委托代理人不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaseagentphone())) {
+ throw new BusinessException("供货单位委托代理人联系电话不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPurchaseaccount())) {
+ throw new BusinessException("供货单位账户不能为空");
+ }
+
+
+
+ //合同内容:
+ if (StringUtils.isBlank(contractOrderVo.getQualitystandard())) {
+ throw new BusinessException("产品质量标准及要求不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getProhibiteddrug())) {
+ throw new BusinessException("禁(限)用药物要求不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getPackingstandard())) {
+ throw new BusinessException("产品包装标准及要求不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getTimeandlocation())) {
+ throw new BusinessException("提(交)货时间和地点不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getTransportandcost())) {
+ throw new BusinessException("运输方式及费用负担不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getAcceptstandard())) {
+ throw new BusinessException("验收标准与方法不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getObjectdeadline())) {
+ throw new BusinessException("提出异议期限不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSettlemethod())) {
+ throw new BusinessException("结算方式与期限不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getProductsafetyandquality())) {
+ throw new BusinessException("产品安全与质量责任不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getTransportsafety())) {
+ throw new BusinessException("运输安全责任不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getBreakcontract())) {
+ throw new BusinessException("违约责任不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getContractdisputesfelid())) {
+ throw new BusinessException("合同争议的解决方式不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getOtheragreedmatters())) {
+ throw new BusinessException("其他约定事项不能为空");
+ }
+ //有效期
+ if (contractOrderVo.getValidstarttime() == null || contractOrderVo.getValidendtime() == null) {
+ throw new BusinessException("合同有效期不能为空");
+ }
+ }
+
+
+ /**
+ * @Description: 确认校验
+ * @date 2021/5/11 13:55
+ */
+ @Override
+ public void checkConfirm(ContractOrderVo contractOrderVo) {
+
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyunitaddress())) {
+ throw new BusinessException("生产单位地址不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyrepresentative())) {
+ throw new BusinessException("生产单位法定代表人联系电话不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyrepresentativeemail())) {
+ throw new BusinessException("生产单位法定代表人电子邮箱不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplybank())) {
+ throw new BusinessException("生产单位开户银行不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplylicensenumber())) {
+ throw new BusinessException("生产单位许可证编号不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyzipcode())) {
+ throw new BusinessException("生产单位邮政编码不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyagent())) {
+ throw new BusinessException("生产单位委托代理人不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyagentphone())) {
+ throw new BusinessException("生产单位委托代理人联系电话不能为空");
+ }
+
+ if (StringUtils.isBlank(contractOrderVo.getSupplyaccount())) {
+ throw new BusinessException("生产单位账户不能为空");
+ }
+ }
+
+ @Override
+ @Transactional
+ public void returnTag(String ordercode, MultipartFile file,UserInfo userInfo) {
+ if (StringUtils.isBlank(ordercode)) {
+ throw new BusinessException("参数传递错误");
+ }
+ List<ProductCodeInfo> productCodeInfos = productCodeService.selectByOrderCode(ordercode);
+ if (productCodeInfos.size() < 1) {
+ throw new BusinessException("订单编号或者产品出现问题");
+ }
+ byte [] byteArr;
+ try {
+ byteArr = file.getBytes();
+ String originalFilename = file.getOriginalFilename();
+ InputStream inputStream = new ByteArrayInputStream(byteArr);
+ assert originalFilename != null;
+ boolean isExcel2007 = originalFilename.substring(originalFilename.lastIndexOf(".") + 1).endsWith("xlsx");
+ //解析
+ List<String> parsedTags = excelExportService.parseProductCode(inputStream, userInfo, isExcel2007);
+ assert parsedTags.size() > 0;
+ Set<String> distinctSet = new HashSet<>(parsedTags);
+ if (distinctSet.size() != parsedTags.size()) {
+ throw new BusinessException("文件中有重复标签在不同行");
+ }
+ //更新电子标签isdel = 1
+ {
+ List<ProductCodeInfo> updatesTags = new ArrayList<>();
+ Date now = new Date();
+ for (String returnTag : parsedTags) {
+ boolean isError = true;
+ for (ProductCodeInfo realCode : productCodeInfos) {
+ if (realCode.getOriginalcode().equals(returnTag)) {
+ isError = false;
+ //开始更新计数
+ realCode.setIsdel((byte) 1);
+ updatesTags.add(realCode);
+ //流向
+ ProductLocusInfo flow = new ProductLocusInfo();
+ flow.setCreateddate(now);
+ flow.setModifieddate(now);
+ //流向内容为 退货人
+ flow.setContent(userInfo.getUsername());
+ flow.setDirectioncode(returnTag);
+ flow.setType(ProductLocusInfo.ELECTRONIC_LABEL_RETURN_STATUS);
+ flow.setBoxcode(Integer.valueOf(returnTag.substring(19,22)).toString());
+ productLocusService.insertProductLocus(flow);
+ }
+ }
+ //如果上传的标签不在合同编号的电子标签,则有问题
+ if (isError) {
+ throw new BusinessException(returnTag + ":上传的产品电子标签不是该订单的电子标签或者该标签已经退回");
+ }
+ }
+ //执行退回标签
+ productCodeService.updateBatchById(updatesTags);
+ }
+ //变更数量统计
+ {
+ Map<String, Integer> changeMap = new HashMap<>();
+
+ for (String parsedTag : parsedTags) {
+ String productCode = parsedTag.substring(0, 10);
+ if (changeMap.get(productCode) == null) {
+ changeMap.put(productCode, 1);
+ } else {
+ Integer count = changeMap.get(productCode);
+ changeMap.put(productCode, ++count);
+ }
+ }
+
+ for (Map.Entry<String, Integer> entry : changeMap.entrySet()) {
+ String productCode = entry.getKey();
+ Integer returnNum = entry.getValue();
+ //ordercode 和10位productCode 来更新一个变更数量
+ contractDetailService.updateChangNum(ordercode,productCode, returnNum);
+ }
+ }
+
+ //更新单子状态-》有退回
+
+ contractOrderInfoMapper.updateReturnStatus(ordercode,"有退回");
+
+
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new BusinessException("文件传输发生错误");
+ }
+ }
+
+ @Override
+ public String generateZplString(ProductCodePrint productPrint, UserInfo userInfo) {
+ List<ProductCodeVo>productCodeVos = productPrint.getProductCodeVos();
+ //ZplUtil zplUtil = new ZplUtil();
+ return generateInnerTag(productCodeVos, userInfo);
+ }
+
+ @Override
+ public String generateInnerTag(List<ProductCodeVo> productCodeVos, UserInfo userInfo){
+ StringBuilder builder = new StringBuilder();
+ byte type = 1;
+ ControlPrintParam controlPrintParam = controlPrintParamService.getParamsByUser(userInfo,type);
+ for (int i = 0; i < productCodeVos.size(); i++){
+ ProductCodeVo productCodeVo = productCodeVos.get(i);
+ if (productCodeVo == null || (StringUtils.isBlank(productCodeVo.getOrdercode())&& StringUtils.isBlank(productCodeVo.getItemcode()))){
+ if (i % 2 == 1){
+ if (!builder.toString().endsWith("^XZ")){
+ builder.append("^XZ");
+ }else {
+ builder.append("^XA^FD.").append("^XZ");
+ }
+ }
+ continue;
+ }
+ String code = productCodeVo.getItemcode();
+ String title = "新疆流向专用";
+ String date = DateFormatUtils.format(productCodeVo.getCreateddate(), "yyyy-MM-dd HH:mm:ss");
+ Integer baseX = controlPrintParam.getLeftBaseX();
+ Integer titleY = controlPrintParam.getTitleY();
+ Integer titleOffsetX = controlPrintParam.getTitleOffsetX();
+ Integer barCodeWidth = controlPrintParam.getBarcodeWidth();
+ Integer barCodeWidthRatio = controlPrintParam.getBarcodeWidthRadio();
+ Integer barCodeHeight = controlPrintParam.getBarcodeHeight();
+ Integer barCodeY = controlPrintParam.getBarcodeY();
+ Integer qrCodeModel = controlPrintParam.getQrCodeModel();
+ Integer qrCodeMagnification = controlPrintParam.getQrCodeMagnification();
+ Integer qrX = controlPrintParam.getLeftQrX();
+ Integer qrY = controlPrintParam.getQrY();
+ Integer fontSize = controlPrintParam.getFontsize1();
+ Integer fontSize2 = controlPrintParam.getFontsize2();
+ Integer fontSize3 = controlPrintParam.getFontsize3();
+ Integer barCodeTextY = controlPrintParam.getBarcodeTextY();
+ Integer itemNameY = controlPrintParam.getItemNameY();
+ Integer typeY = controlPrintParam.getTypeY();
+ Integer dateY = controlPrintParam.getDateY();
+ Integer manufacturerY = controlPrintParam.getManufacturerY();
+ Integer manufacturerY2 = controlPrintParam.getManufacturerY2();
+ Integer frameX = controlPrintParam.getLeftFrameX();
+ Integer frameY = controlPrintParam.getFrameY();
+ Integer frameWidth = controlPrintParam.getFrameWidth();
+ Integer frameHeight = controlPrintParam.getFrameHeight();
+ Integer darkness = controlPrintParam.getDarkness();
+
+
+ //左标签
+ if (i % 2 == 0){
+ //^XA 开始 ;^JMA 正常打印浓度 ;^SEE:GB18030.DAT^CW1,E:SIMSUN.FNT 支持中文编码
+ builder.append("^XA").append("^JMA").append("^MD").append(darkness).append("^CI28^SEE:GB18030.DAT^CW1,E:SIMSUN.TTF");
+ }else {
+ baseX = controlPrintParam.getRightBaseX();
+ qrX = controlPrintParam.getRightQrX();
+ frameX = controlPrintParam.getRightFrameX();
+ }
+ //标签头
+ //builder.append("^FO").append(baseX).append(",").append(titleY).append("^GFA,64896,64896,00156,").append(title);
+ builder.append("^FO").append(baseX+titleOffsetX).append(",").append(titleY).append("^A1N,").append(fontSize3)
+ .append(",").append(fontSize3).append("^FD").append(title).append("^FS");
+ //条形码
+ builder.append("^BY").append(barCodeWidth).append(",").append(barCodeWidthRatio).append(",")
+ .append(barCodeHeight).append("^FO").append(baseX).append(",").append(barCodeY)
+ .append("^BCN,,N,N^FD").append(code).append("^FS");
+ //二维码
+ builder.append("^BQN,").append(qrCodeModel).append(",").append(qrCodeMagnification).append("^FO")
+ .append(qrX).append(",").append(qrY).append("^FDLA,").append(code).append("^FS");
+ //条形码文字
+ builder.append("^FO").append(baseX).append(",").append(barCodeTextY).append("^A1N,")
+ .append(fontSize).append("^FD").append(code).append("^FS");
+ //其他信息
+ //文字转换图片打印,但转换后数据太大
+ // builder.append(zplUtil.getCharPicture(productCodeVo.getItemname(),baseX,itemNameY,30,34,1));
+ // builder.append(zplUtil.getCharPicture(productCodeVo.getType(),baseX,typeY,30,34,1));
+ // builder.append(zplUtil.getCharPicture(productCodeVo.getManufacturer(),baseX,manufacturerY,30,34,1));
+ // builder.append("^FO").append(baseX).append(",").append(dateY).append("^A,").append(fontSize).append(",")
+ // .append(fontSize).append("^FD").append(date).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(itemNameY).append("^A1N,").append(fontSize2)
+ .append(",").append(fontSize2).append("^FD").append(productCodeVo.getItemname()).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(typeY).append("^A1N,").append(fontSize2).append(",")
+ .append(fontSize2).append("^FD").append(productCodeVo.getType()).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(dateY).append("^A1N,").append(fontSize).append(",")
+ .append(fontSize).append("^FD").append(date).append("^FS");
+ String manufacturer = productCodeVo.getManufacturer();
+ if (StringUtils.isBlank(manufacturer)){
+ throw new BusinessException("错误:生产厂家为空");
+ }
+ builder.append("^FO").append(baseX).append(",").append(manufacturerY).append("^A1N,").append(fontSize2)
+ .append(",").append(fontSize2).append("^FD").append(manufacturer.length()>16?manufacturer.substring(0,16):manufacturer).append("^FS");
+ if (manufacturer.length()>16){
+ builder.append("^FO").append(baseX).append(",").append(manufacturerY2).append("^A1N,").append(fontSize2)
+ .append(",").append(fontSize2).append("^FD").append(manufacturer.substring(16)).append("^FS");
+ }
+ builder.append("^FO").append(frameX).append(",").append(frameY).append("^GB").append(frameWidth)
+ .append(",").append(frameHeight).append(",4,B,1^FS");
+ if (i % 2 != 0){
+ builder.append("^XZ");
+ }
+
+ }
+
+ return builder.toString();
+ }
+
+ @Override
+ public String generateOuterTag(List<ProductCodeVo> productCodeVos, UserInfo userInfo){
+ StringBuilder builder = new StringBuilder();
+ byte type = 2;
+ ControlPrintParam controlPrintParam = controlPrintParamService.getParamsByUser(userInfo,type);
+ for (int i = 0; i < productCodeVos.size(); i++){
+ ProductCodeVo productCodeVo = productCodeVos.get(i);
+ if (productCodeVo == null || (StringUtils.isBlank(productCodeVo.getOrdercode())&& StringUtils.isBlank(productCodeVo.getItemcode()))){
+ if (i % 2 == 1){
+ builder.append("^XZ");
+ }
+ builder.append("^XA").append("^XZ");
+ continue;
+ }
+ String code = productCodeVo.getOriginalcode();
+ if (code.length()!= 22){
+ continue;
+ }
+ String codePrefix = code.substring(0,19);
+ String codeSuffix = code.substring(19);
+
+ String title = "新疆专用:包装识别码";
+ String date = DateFormatUtils.format(productCodeVo.getCreateddate(), "yyyy/MM/dd");
+ int baseX = controlPrintParam.getLeftBaseX();
+ int titleY = controlPrintParam.getTitleY();
+ int barCodeWidth = controlPrintParam.getBarcodeWidth();
+ int barCodeWidthRatio = controlPrintParam.getBarcodeWidthRadio();
+ int barCodeHeight = controlPrintParam.getBarcodeHeight();
+ int barCodeY = controlPrintParam.getBarcodeY();
+ int qrCodeModel = controlPrintParam.getQrCodeModel();
+ int qrCodeMagnification = controlPrintParam.getQrCodeMagnification();
+ int qrX = controlPrintParam.getLeftQrX();
+ int qrY = controlPrintParam.getQrY();
+ int fontSize = controlPrintParam.getFontsize1();
+ int fontSize2 = controlPrintParam.getFontsize2();
+ int barCodeTextY = controlPrintParam.getBarcodeTextY();
+ int itemNameY = controlPrintParam.getItemNameY();
+ int typeY = controlPrintParam.getTypeY();
+ int dateY = controlPrintParam.getDateY();
+ int totalY = controlPrintParam.getTotalY();
+ int manufacturerY = controlPrintParam.getManufacturerY();
+ int manufacturerY2 = controlPrintParam.getManufacturerY2();
+ int darkness = controlPrintParam.getDarkness();
+
+ //左标签
+ if (i % 2 == 0){
+ //^XA 开始 ;^JMA 正常打印浓度 ;^SEE:GB18030.DAT^CW1,E:SIMSUN.FNT 支持中文编码
+ builder.append("^XA").append("^JMA").append("^MD").append(darkness).append("^CI28^SEE:GB18030.DAT^CW1,E:SIMSUN.TTF");
+ }else {
+ baseX = controlPrintParam.getRightBaseX();
+ qrX = controlPrintParam.getRightQrX();
+ }
+ //标签头
+ builder.append("^FO").append(baseX).append(",").append(titleY).append("^A1N,").append(fontSize2)
+ .append("^FD").append(title).append(productCodeVo.getBoxrange()).append("^FS");
+ //条形码
+ builder.append("^BY").append(barCodeWidth).append(",").append(barCodeWidthRatio).append(",")
+ .append(barCodeHeight).append("^FO").append(baseX-20).append(",").append(barCodeY)
+ .append("^BCN,,N,N^FD").append(code).append("^FS");
+ //二维码
+ builder.append("^BQN,").append(qrCodeModel).append(",").append(qrCodeMagnification).append("^FO")
+ .append(qrX).append(",").append(qrY).append("^FDLA,").append(code).append("^FS");
+ //条形码文字
+ builder.append("^FO").append(baseX).append(",").append(barCodeTextY).append("^A1,")
+ .append(fontSize).append("^FD").append(codePrefix).append(" ").append(codeSuffix).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(itemNameY).append("^A1N,").append(fontSize2)
+ .append(",").append(fontSize2).append("^FD").append(productCodeVo.getItemname()).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(typeY).append("^A1N,").append(fontSize2).append(",")
+ .append(fontSize2).append("^FD").append(productCodeVo.getType()).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(dateY).append("^A1N,").append(fontSize).append(",")
+ .append(fontSize).append("^FD").append(date).append("^FS");
+ builder.append("^FO").append(baseX).append(",").append(totalY).append("^A1N,").append(fontSize).append(",")
+ .append(fontSize).append("^FD").append("总装药量:").append(productCodeVo.getExplosivecontent()).append("^FS");
+ builder.append("^FO").append(qrX).append(",").append(totalY).append("^A1N,").append(fontSize).append(",")
+ .append(fontSize).append("^FD").append("箱含量:").append(productCodeVo.getBoxnumber()).append("^FS");
+ String manufacturer = productCodeVo.getManufacturer();
+ if (StringUtils.isBlank(manufacturer)){
+ throw new BusinessException("错误:生产厂家为空");
+ }
+ builder.append("^FO").append(baseX).append(",").append(manufacturerY).append("^A1N,").append(fontSize2)
+ .append(",").append(fontSize2).append("^FD").append(manufacturer.length()>16?manufacturer.substring(0,16):manufacturer).append("^FS");
+ if (manufacturer.length()>16){
+ builder.append("^FO").append(baseX).append(",").append(manufacturerY2).append("^A1N,").append(fontSize2)
+ .append(",").append(fontSize2).append("^FD").append(manufacturer.substring(16)).append("^FS");
+ }
+ if (i % 2 != 0){
+ builder.append("^XZ");
+ }
+ }
+ if (!builder.toString().endsWith("^XZ")){
+ builder.append("^XZ");
+ }
+ return builder.toString();
+ }
+
+ /**
+ * @Description: 生成规律单号
+ * @date 2021/5/10 10:11
+ */
+ private String generateRegularCode() {
+ //查询当日合同总数
+ int num = contractOrderInfoMapper.selectCountToday();
+ String numStr = num + 1 + "";
+ //超过3位 显示原位数据 不需要补0
+ if (numStr.length() >= 3) {
+ return numStr;
+ }
+ //不超过则需要补0
+ //距离
+ int i = 3 - numStr.length();
+ return String.format("%03d", num + 1);
+
+ }
+
+}
--
Gitblit v1.9.2