From 2fcd97552d16718cc7997629fd637a73a5a4483f Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: 星期一, 19 六月 2023 14:44:19 +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