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