package com.ld.igds.inout.manager; import com.bstek.bdf2.core.model.DefaultDept; import com.ld.igds.check.dto.CheckItemData; import com.ld.igds.check.service.CoreCheckStandardService; import com.ld.igds.common.CoreCommonService; import com.ld.igds.common.bar.BarCodeUtils; import com.ld.igds.constant.FoodLevel; import com.ld.igds.constant.FoodVariety; import com.ld.igds.inout.InoutBill; import com.ld.igds.inout.InoutConstant; import com.ld.igds.inout.dto.*; import com.ld.igds.inout.service.InoutRecordItemService; import com.ld.igds.m.dto.NoticeDto; import com.ld.igds.m.service.HInoutNoticeService; import com.ld.igds.models.Depot; import com.ld.igds.models.InoutSettle; import com.ld.igds.sys.service.SysDeptService; import com.ld.igds.util.MoneyUtil; import com.ld.igds.util.NumberUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.*; @Component public class InoutReportManager { @Autowired private CoreCommonService commonService; @Autowired private SysDeptService sysDeptService; @Autowired private CoreCheckStandardService checkStandardService; @Autowired private InoutRecordItemService inoutRecordItemService; @Autowired private HInoutNoticeService noticeService; /** * 获取入库过磅单数据信息 * * @param data * @return */ public String inWeightBill(InoutData data) { // 获取表单数据 WeightBill bill = this.createBillData(data, "入库划码单"); // 调整模版数据并返回 String htmlStr = InoutBill.IN_WEIGHT_DEFAULT; // 义乌专用 if ("5013".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5013; } // 大湾区专用 if ("5016".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5016; } // 上海嘉定使用 if ("5303".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5303; } // 青神县粮库使用 if ("5308".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5308; } // 潮阳储备库使用 if ("5317".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5317; } // 徐闻储备库使用 if ("5322".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5322; } // 眉山市库使用 if ("5005".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5005; } // 丹棱库使用 if ("5012".equals(data.getCompanyId())) { htmlStr = InoutBill.IN_WEIGHT_5012; } htmlStr = htmlStr.replace("billTitle", bill.getBillTitle()); htmlStr = htmlStr.replace("registerTime", bill.getRegisterTime()); htmlStr = htmlStr.replace("completeTime", bill.getCompleteTime()); htmlStr = htmlStr.replace("fullTime", bill.getFullTime()); htmlStr = htmlStr.replace("emptyTime", bill.getEmptyTime()); htmlStr = htmlStr.replace("serId", bill.getSerId()); // htmlStr = htmlStr.replace("specType", bill.getSpecType()); htmlStr = htmlStr.replace("customerName", bill.getCustomerName()); htmlStr = htmlStr.replace("deptName", bill.getUnitName()); htmlStr = htmlStr.replace("driverName", bill.getDriverName()); htmlStr = htmlStr.replace("userNumberId", bill.getUserId()); htmlStr = htmlStr.replace("userContact", bill.getUserContact()); htmlStr = htmlStr.replace("userAddress", bill.getUserAddress()); htmlStr = htmlStr.replace("foodVariety", bill.getFoodVariety()); htmlStr = htmlStr.replace("depotName", bill.getDepotName()); htmlStr = htmlStr.replace("foodLocation", bill.getFoodLocation()); htmlStr = htmlStr.replace("plateNum", bill.getPlateNum()); htmlStr = htmlStr.replace("fullWeight", new DecimalFormat("0").format(bill.getFullWeight())); htmlStr = htmlStr.replace("emptyWeight", new DecimalFormat("0").format(bill.getEmptyWeight())); htmlStr = htmlStr.replace("netWeight", new DecimalFormat("0").format(bill.getNetWeight())); htmlStr = htmlStr.replace("deImpurity", bill.getDeImpurity() + ""); htmlStr = htmlStr.replace("deWet", bill.getDeWet() + ""); htmlStr = htmlStr.replace("recordWeight", bill.getRecordWeight() + ""); htmlStr = htmlStr.replace("deCheck", bill.getDeCheck() + ""); htmlStr = htmlStr.replace("addCheck", bill.getAddCheck() + ""); htmlStr = htmlStr.replace("deSum", bill.getDeSum() + ""); htmlStr = htmlStr.replace("settleWeight", new DecimalFormat("0").format(bill.getSettleWeight())); htmlStr = htmlStr.replace("deHandle", bill.getDeHandle() + ""); htmlStr = htmlStr.replace("deOther", bill.getDeOther() + ""); htmlStr = htmlStr.replace("price", bill.getPrice()); htmlStr = htmlStr.replace("settleMoney", bill.getSettleMoney() + ""); htmlStr = htmlStr.replace("wet", bill.getWet() + ""); htmlStr = htmlStr.replace("impurity", bill.getImpurity() + ""); htmlStr = htmlStr.replace("checkStatus", bill.getCheckStatus()); htmlStr = htmlStr.replace("remark", bill.getRemark()); htmlStr = htmlStr.replace("moneyName", bill.getMoneyName()); htmlStr = htmlStr.replaceAll("weightUser", bill.getWeightUser() == null ? "" : bill.getWeightUser()); htmlStr = htmlStr.replaceAll("handleUser", bill.getHandleUser() == null ? "" : bill.getHandleUser()); htmlStr = htmlStr.replaceAll("keeperName", bill.getKeeperUser() == null ? "" : bill.getKeeperUser()); return htmlStr; } /** * 获取出库过磅单 * * @param data * @return */ public String outWeightBill(InoutData data) { // 获取表单数据 WeightBill bill = this.createBillData(data, "出库划码单"); //默认模版 String htmlStr = InoutBill.OUT_WEIGHT_DEFAULT; // 义乌专用 if ("5013".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5013; } // 大湾区专用 if ("5016".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5016; } // 上海嘉定粮库使用 if ("5303".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5303; } // 青神县粮库使用 if ("5308".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5308; } // 潮阳储备库使用 if ("5317".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5317; } // 徐闻储备库使用 if ("5322".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5322; } // 眉山市库使用 if ("5005".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5005; } // 丹棱库使用 if ("5012".equals(data.getCompanyId())) { htmlStr = InoutBill.OUT_WEIGHT_5012; } htmlStr = htmlStr.replace("billTitle", bill.getBillTitle()); htmlStr = htmlStr.replace("registerTime", bill.getRegisterTime()); htmlStr = htmlStr.replace("completeTime", bill.getCompleteTime()); htmlStr = htmlStr.replace("fullTime", bill.getFullTime()); htmlStr = htmlStr.replace("emptyTime", bill.getEmptyTime()); htmlStr = htmlStr.replace("serId", bill.getSerId()); // htmlStr = htmlStr.replace("specType", bill.getSpecType()); htmlStr = htmlStr.replace("customerName", bill.getCustomerName()); htmlStr = htmlStr.replace("deptName", bill.getUnitName()); htmlStr = htmlStr.replace("driverName", bill.getDriverName()); htmlStr = htmlStr.replace("userNumberId", bill.getUserId()); htmlStr = htmlStr.replace("userContact", bill.getUserContact()); htmlStr = htmlStr.replace("userAddress", bill.getUserAddress()); htmlStr = htmlStr.replace("foodVariety", bill.getFoodVariety()); htmlStr = htmlStr.replace("depotName", bill.getDepotName()); htmlStr = htmlStr.replace("foodLocation", bill.getFoodLocation()); htmlStr = htmlStr.replace("plateNum", bill.getPlateNum()); htmlStr = htmlStr.replace("fullWeight", new DecimalFormat("0").format(bill.getFullWeight())); htmlStr = htmlStr.replace("emptyWeight", new DecimalFormat("0").format(bill.getEmptyWeight())); htmlStr = htmlStr.replace("netWeight", new DecimalFormat("0").format(bill.getNetWeight())); htmlStr = htmlStr.replace("remark", bill.getRemark()); // htmlStr = htmlStr.replace("deWet", bill.getDeWet() + ""); htmlStr = htmlStr.replace("settleWeight", new DecimalFormat("0").format(bill.getSettleWeight())); htmlStr = htmlStr.replace("deHandle", bill.getDeHandle() + ""); htmlStr = htmlStr.replace("handleUser", bill.getHandleUser()); htmlStr = htmlStr.replace("deSum", bill.getDeSum() + ""); htmlStr = htmlStr.replace("deOther", bill.getDeOther() + ""); htmlStr = htmlStr.replace("price", bill.getPrice()); htmlStr = htmlStr.replace("settleMoney", bill.getSettleMoney() + ""); htmlStr = htmlStr.replace("wet", bill.getWet() + ""); htmlStr = htmlStr.replace("impurity", bill.getImpurity() + ""); htmlStr = htmlStr.replaceAll("weightUser", bill.getWeightUser() == null ? "" : bill.getWeightUser()); htmlStr = htmlStr.replaceAll("handleUser", bill.getHandleUser() == null ? "" : bill.getHandleUser()); htmlStr = htmlStr.replaceAll("keeperName", bill.getKeeperUser() == null ? "" : bill.getKeeperUser()); return htmlStr; } /** * 封装过磅单数据 * * @param data * @param billTitle * @return */ private WeightBill createBillData(InoutData data, String billTitle) { WeightBill bill = new WeightBill(); if ("5016".equals(data.getCompanyId())) { billTitle = "称重计量单"; } DefaultDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getDeptId()); if (null != dept && StringUtils.isNotEmpty(dept.getName())) { billTitle = dept.getName() + billTitle; bill.setDeptId(dept.getId()); bill.setUnitName(dept.getName()); } bill.setBillTitle(billTitle); bill.setCompanyId(data.getCompanyId() == null ? "" : data .getCompanyId()); if (null == data.getRegisterTime()) { data.setRegisterTime(new Date()); } bill.setRegisterTime(DateFormatUtils.format(data.getRegisterTime(), "yyyy-MM-dd HH:mm")); if (null == data.getCompleteTime()) { data.setCompleteTime(new Date()); } bill.setCompleteTime(DateFormatUtils.format(data.getCompleteTime(), "yyyy-MM-dd HH:mm")); bill.setEmptyTime(DateFormatUtils.format(data.getEmptyWeightTime(), "yyyy-MM-dd HH:mm:ss")); bill.setFullTime(DateFormatUtils.format(data.getFullWeightTime(), "yyyy-MM-dd HH:mm:ss")); bill.setSerId(data.getId()); if ("5016".equals(data.getCompanyId())) { bill.setCompleteTime(DateFormatUtils.format(data.getCompleteTime(), "yyyy-MM-dd")); bill.setSerId(data.getId().substring(2)); } //客户信息 bill.setCustomerName(data.getCustomerName() == null ? "" : data.getCustomerName()); bill.setUserId(data.getUserId() == null ? "" : data.getUserId()); bill.setUserAddress(data.getUserAddress() == null ? "" : data.getUserAddress()); bill.setUserContact(data.getUserContact() == null ? "" : data.getUserContact()); //从通知单中获取收发货单位信息 NoticeDto noticeDto = noticeService.queryNoticeById(data.getNoticeId(), data.getType()); if (null != noticeDto && StringUtils.isNotEmpty(noticeDto.getUnitName())) { bill.setUnitName(noticeDto.getUnitName()); } bill.setDriverName(data.getUserName() == null ? "" : data.getUserName()); // 获取仓库信息 Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId()); if (depot != null) { bill.setDepotName(depot.getName() == null ? "" : depot.getName()); bill.setHandleUser(depot.getStoreKeeperName() == null ? "" : depot .getStoreKeeperName()); } bill.setFoodVariety(FoodVariety.getMsg(data.getFoodVariety())); bill.setFoodLocation(data.getFoodLocation() == null ? "" : data .getFoodLocation()); bill.setPlateNum(data.getPlateNum()); bill.setFullWeight(data.getFullWeight()); bill.setEmptyWeight(data.getEmptyWeight()); bill.setNetWeight(data.getNetWeight()); bill.setDeCheck(data.getDeCheck()); bill.setAddCheck(data.getAddCheck()); bill.setRecordWeight(data.getRecordWeight()); bill.setCheckStatus(data.getCheckStatus().equals(InoutConstant.STATUS_PASS) ? "合格" : "不合格"); bill.setDeHandle(data.getDeHandle()); bill.setDeOther(data.getDeOther()); bill.setSettleWeight(data.getSettleWeight()); bill.setPrice(data.getPrice() == null ? "" : data.getPrice() + ""); if (data.getSettleMoney() <= 0) { if (null != data.getPrice() && null != data.getRecordWeight()) { data.setSettleMoney(NumberUtil.keepPrecision(data.getPrice() * data.getRecordWeight(), 2)); } } bill.setSettleMoney(data.getSettleMoney() == null ? "" : data.getSettleMoney() + ""); bill.setRemark(data.getRemarks() == null ? "" : data.getRemarks()); if(InoutConstant.TYPE_IN.equals(data.getType())){ bill.setWeightUser(data.getFullWeightUser()); } if(InoutConstant.TYPE_OUT.equals(data.getType())){ bill.setWeightUser(data.getEmptyWeightUser()); } bill.setHandleUser(data.getHandleUser()); bill.setKeeperUser(depot.getStoreKeeperName()); return bill; } /** * 获取入库验检单 * * @param data * @return */ public String inCheckBill(InoutData data) { // 获取化验数据 List checkLst = data.getCheckItems(); if (null == checkLst) checkStandardService.getCheckItemById(data.getCheckId(), data.getCompanyId()); if (checkLst == null || checkLst.size() < 1) { return "无化验数据,不打印!"; } String mark = data.getFoodVariety().substring(0, 3); // 调整模版数据并返回 String htmlStr = ""; if (FoodVariety.FOOD_VARIETY_WHEAT.equals(mark)) { htmlStr = InoutBill.IN_CHECK_WHEAT; } else if (FoodVariety.FOOD_VARIETY_PADDY.equals(mark)) { htmlStr = InoutBill.IN_CHECK_PADDY; } else if (FoodVariety.FOOD_VARIETY_CORN.equals(mark)) { htmlStr = InoutBill.IN_CHECK_CORN; } else if (FoodVariety.FOOD_VARIETY_SOYBEAN.equals(data.getFoodVariety())) { htmlStr = InoutBill.IN_CHECK_SOYBEAN; } else { return "模板暂未确定!!"; } DefaultDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getDeptId()); htmlStr = htmlStr.replace("billTitle", (dept == null ? "入库化验单" : dept.getName() + "入库化验单")); // 替换基础数据 String time = DateFormatUtils.format(data.getRegisterTime(), "yyyy-MM-dd"); String checkTime = data.getCheckTime() == null ? "-" : DateFormatUtils.format(data.getCheckTime(), "yyyy-MM-dd HH:mm:ss"); String sampleTime = data.getSampleTime() == null ? "-" : DateFormatUtils.format(data.getSampleTime(), "yyyy-MM-dd HH:mm:ss"); String reportTime = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"); // htmlStr = htmlStr.replace("time", time); htmlStr = htmlStr.replace("customerName", data.getCustomerName()); htmlStr = htmlStr.replace("serId", data.getId().substring(2)); htmlStr = htmlStr.replace("deptName", dept.getName()); htmlStr = htmlStr.replace("foodVariety", FoodVariety.getMsg(data.getFoodVariety())); htmlStr = htmlStr.replace("plateNum", data.getPlateNum()); htmlStr = htmlStr.replace("userName", data.getUserName()); htmlStr = htmlStr.replace("foodYear", data.getFoodYear() == null ? "-" : data.getFoodYear()); Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId()); htmlStr = htmlStr.replace("storeKeeperName", depot == null ? "" : (depot.getStoreKeeperName() == null ? "" : depot.getStoreKeeperName())); htmlStr = htmlStr.replace("depotName", depot == null ? "-" : depot.getName()); htmlStr = htmlStr.replace("checkUser", data.getCheckUser() == null ? "-" : data.getCheckUser()); htmlStr = htmlStr.replace("foodType", data.getFoodType() == null ? "-" : data.getFoodType()); htmlStr = htmlStr.replace("foodNumber", data.getSettleWeight() + ""); htmlStr = htmlStr.replace("checkNum", data.getDeCheck() + ""); htmlStr = htmlStr.replace("foodLocation", data.getFoodLocation() == null ? "-" : data.getFoodLocation()); htmlStr = htmlStr.replace("foodLevel", data.getFoodLevel() == null ? "-" : FoodLevel.getMsg(data.getFoodLevel())); htmlStr = htmlStr.replace("hwmc", ""); htmlStr = htmlStr.replace("unit", ""); htmlStr = htmlStr.replace("sampleUser", data.getSampleUser() == null ? "-" : data.getSampleUser()); htmlStr = htmlStr.replace("checkTime", checkTime); htmlStr = htmlStr.replace("sampleTime", sampleTime); htmlStr = htmlStr.replace("bgcjsj", reportTime); htmlStr = htmlStr.replace("remark", data.getRemarks() == null ? "无" : data.getRemarks()); Map checkBillItems = getCheckBillItems(); // 遍历化验结果,存入map集合中 String key; for (CheckItemData item : checkLst) { key = item.getStandardId() + "_ST"; // checkBillItems.put(key, item.getStandardValue()); // key = item.getStandardId() + "_VAL"; checkBillItems.put(key, item.getValue()); } // 遍历map集合,替换化验单中化验值 String value; for (String str : checkBillItems.keySet()) { value = checkBillItems.get(str); if (StringUtils.isNotEmpty(value)) { htmlStr = htmlStr.replace(str, value); } else { htmlStr = htmlStr.replace(str, "-"); } } return htmlStr; } /** * 封装化验项 * * @return */ private Map getCheckBillItems() { Map map = new HashMap<>(); map.put("C01_ST", ""); map.put("C01_VAL", ""); map.put("C02_ST", ""); map.put("C02_VAL", ""); map.put("C03_ST", ""); map.put("C03_VAL", ""); map.put("C04_ST", ""); map.put("C04_VAL", ""); map.put("C05_ST", ""); map.put("C05_VAL", ""); map.put("C06_ST", ""); map.put("C06_VAL", ""); map.put("C07_ST", ""); map.put("C07_VAL", ""); map.put("C08_ST", ""); map.put("C08_VAL", ""); map.put("C09_ST", ""); map.put("C09_VAL", ""); map.put("C10_ST", ""); map.put("C10_VAL", ""); map.put("C11_ST", ""); map.put("C11_VAL", ""); map.put("C12_ST", ""); map.put("C12_VAL", ""); map.put("C13_ST", ""); map.put("C13_VAL", ""); map.put("C14_ST", ""); map.put("C14_VAL", ""); map.put("C15_ST", ""); map.put("C15_VAL", ""); map.put("C16_ST", ""); map.put("C16_VAL", ""); map.put("C17_ST", ""); map.put("C17_VAL", ""); map.put("C18_ST", ""); map.put("C18_VAL", ""); map.put("C19_ST", ""); map.put("C19_VAL", ""); map.put("C20_ST", ""); map.put("C20_VAL", ""); map.put("C21_ST", ""); map.put("C21_VAL", ""); map.put("C22_ST", ""); map.put("C22_VAL", ""); map.put("C23_ST", ""); map.put("C23_VAL", ""); map.put("C24_ST", ""); map.put("C24_VAL", ""); map.put("C25_ST", ""); map.put("C25_VAL", ""); map.put("C26_ST", ""); map.put("C26_VAL", ""); map.put("C27_ST", ""); map.put("C27_VAL", ""); map.put("C28_ST", ""); map.put("C28_VAL", ""); map.put("C29_ST", ""); map.put("C29_VAL", ""); map.put("C30_ST", ""); map.put("C30_VAL", ""); map.put("C31_ST", ""); map.put("C31_VAL", ""); map.put("C32_ST", ""); map.put("C32_VAL", ""); map.put("C33_ST", ""); map.put("C33_VAL", ""); map.put("C34_ST", ""); map.put("C34_VAL", ""); map.put("C35_ST", ""); map.put("C35_VAL", ""); return map; } /** * 获取入库结算单 * * @param data * @return */ public String inSettleBill(InoutData data, InoutSettle settle) { if (null != data) { // settle.setCompleteTime(data.getCompleteTime()); settle.setDepotId(data.getDepotId()); settle.setDeptId(data.getDeptId()); // settle.setUserName(data.getUserName()); // settle.setPlateNum(data.getPlateNum()); // settle.setFoodLevel(data.getFoodLevel()); // settle.setFoodVariety(data.getFoodVariety()); } // 调整模版数据并返回 String htmlStr = InoutBill.IN_SETTLE_DEFAULT; DefaultDept dept = sysDeptService.getCacheDept(settle.getCompanyId(), settle.getDeptId()); htmlStr = htmlStr.replace("billTitle", (dept == null ? "入库结算单" : dept.getName() + "入库结算单")); String time = DateFormatUtils.format( settle.getPayTime() == null ? new Date() : settle.getPayTime(), "yyyy-MM-dd HH:mm"); htmlStr = htmlStr.replace("payTime", time); htmlStr = htmlStr.replace("serId", settle.getId()); // htmlStr = htmlStr.replace( // "customerName", // settle.getCustomerName() == null ? "" : settle // .getCustomerName()); htmlStr = htmlStr.replace("deptName", dept == null ? "" : dept.getName()); htmlStr = htmlStr.replace("bank", settle.getBank() == null ? "" : settle.getBank()); // htmlStr = htmlStr.replace("fullWeight", // new DecimalFormat("0").format(settle.getFullWeight())); // htmlStr = htmlStr.replace("emptyWeight", // new DecimalFormat("0").format(settle.getEmptyWeight())); htmlStr = htmlStr.replace("banNum", settle.getBankNum() == null ? "" : settle.getBankNum()); // htmlStr = htmlStr.replace("netWeight", // new DecimalFormat("0").format(settle.getNetWeight())); // htmlStr = htmlStr.replace("deSum", // new DecimalFormat("0").format(settle.getDeSum())); // 获取仓库信息 Depot depot = commonService.getCacheDepot(settle.getCompanyId(), settle.getDepotId()); htmlStr = htmlStr.replace("depotName", depot == null ? "" : depot.getName()); // htmlStr = htmlStr.replace("foodVariety", // FoodVariety.getMsg(settle.getFoodVariety())); htmlStr = htmlStr.replace("payPrice", settle.getPayPrice() + ""); htmlStr = htmlStr.replace("settleWeight", new DecimalFormat("0").format(settle.getSettleWeight())); if (null == depot) { htmlStr = htmlStr.replace("keeperName", ""); } else { htmlStr = htmlStr.replace( "keeperName", depot.getStoreKeeperName() == null ? "" : depot .getStoreKeeperName()); } // htmlStr = htmlStr.replace("driverName", settle.getUserName() + ""); // htmlStr = htmlStr.replace("otherSum", settle.getOtherSum() + ""); htmlStr = htmlStr.replace("paySum", settle.getPaySum() + ""); htmlStr = htmlStr.replace("remark", settle.getRemarks() == null ? "" : settle.getRemarks()); htmlStr = htmlStr.replace("moneyName", MoneyUtil.formatToCN(new BigDecimal(settle.getPaySum()))); return htmlStr; } /** * 获取船运过磅单数据信息 * * @param data * @return */ public String shipWeightBill(InoutData data) { //获取船运子表信息 InoutRecordItemParam param = new InoutRecordItemParam(); param.setRecordId(data.getId()); param.setType(data.getType()); List list = inoutRecordItemService.listInoutItem(param); if (null == list || list.isEmpty()) { return "未获取到船运车辆信息,不打印!"; } //调整模版数据并返回 String htmlStr = InoutBill.SHIP_WEIGHT_DEFAULT; DefaultDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getDeptId()); htmlStr = htmlStr.replace("billTitle", (dept == null ? "船运过磅单" : dept.getName() + "船运过磅单")); htmlStr = htmlStr.replace("registerTime", data.getRegisterTime() == null ? "" : DateFormatUtils.format(data.getRegisterTime(), "yyyy-MM-dd HH:mm")); htmlStr = htmlStr.replace("completeTime", data.getCompleteTime() == null ? "" : DateFormatUtils.format(data.getCompleteTime(), "yyyy-MM-dd HH:mm")); htmlStr = htmlStr.replace("serId", data.getId()); if (InoutConstant.TYPE_IN.equals(data.getType())) { htmlStr = htmlStr.replace("customerName", data.getCustomerName()); htmlStr = htmlStr.replace("deptName", dept.getName()); } if (InoutConstant.TYPE_OUT.equals(data.getType())) { htmlStr = htmlStr.replace("customerName", dept.getName()); htmlStr = htmlStr.replace("deptName", data.getCustomerName()); } htmlStr = htmlStr.replace("plateNum", data.getPlateNum()); // 获取仓库信息 Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId()); htmlStr = htmlStr.replace("depotName", depot == null ? "" : depot.getName()); htmlStr = htmlStr.replace("handleUser", depot == null ? "" : (depot.getStoreKeeperName() == null ? "" : depot.getStoreKeeperName())); htmlStr = htmlStr.replace("foodVariety", FoodVariety.getMsg(data.getFoodVariety())); htmlStr = htmlStr.replace("foodLocation", StringUtils.isEmpty(data.getFoodLocation()) ? "" : data.getFoodLocation()); for (int i = 30; i >= 1; i--) { if (i <= list.size()) { htmlStr = htmlStr.replace("carNum" + i, list.get(i - 1).getCarNum()); htmlStr = htmlStr.replace("full" + i, new DecimalFormat("0").format(list.get(i - 1).getFullWeight())); htmlStr = htmlStr.replace("empty" + i, new DecimalFormat("0").format(list.get(i - 1).getEmptyWeight())); htmlStr = htmlStr.replace("number" + i, new DecimalFormat("0").format(list.get(i - 1).getSettleWeight())); } else { htmlStr = htmlStr.replace("carNum" + i, ""); htmlStr = htmlStr.replace("full" + i, ""); htmlStr = htmlStr.replace("empty" + i, ""); htmlStr = htmlStr.replace("number" + i, ""); } } htmlStr = htmlStr.replace("remarks", data.getRemarks() == null ? "" : data.getRemarks()); htmlStr = htmlStr.replace("fullWeight", new DecimalFormat("0").format(data.getFullWeight())); htmlStr = htmlStr.replace("emptyWeight", new DecimalFormat("0").format(data.getEmptyWeight())); htmlStr = htmlStr.replace("settleWeight", new DecimalFormat("0").format(data.getSettleWeight())); return htmlStr; } /** * 获取船运过磅单数据信息 * * @param data * @return */ public List shipWeightBill2(InoutData data) { //获取船运子表信息 InoutRecordItemParam param = new InoutRecordItemParam(); param.setRecordId(data.getId()); param.setType(data.getType()); List list = inoutRecordItemService.listInoutItem(param); List result = new ArrayList<>(); if (null == list || list.isEmpty()) { result.add("未获取到船运车辆信息,不打印!"); return result; } String htmlStr; if (list.size() <= 30) { //只有一页时 htmlStr = getShipBill(data, list, true, 0); result.add(htmlStr); } else { //有多页时 int page = list.size() / 30 + 1; for (int i = 1; i <= page; i++) { if (i == page) { htmlStr = getShipBill(data, list.subList((i - 1) * 30, list.size()), true, i); } else { htmlStr = getShipBill(data, list.subList((i - 1) * 30, i * 30), false, i); } result.add(htmlStr); } } return result; } /** * 获取船运打印模板数据 * * @param data 流水信息 * @param list 车辆信息,数量不大于30 * @param moreTag 结算标签,true-代表结算页;false-不是结算页 * @param pageNum 页码 * @return */ public String getShipBill(InoutData data, List list, boolean moreTag, int pageNum) { //调整模版数据并返回 String htmlStr = InoutBill.SHIP_WEIGHT_DEFAULT_MORE; if (moreTag) { htmlStr = InoutBill.SHIP_WEIGHT_DEFAULT; } DefaultDept dept = sysDeptService.getCacheDept(data.getCompanyId(), data.getDeptId()); //表头 String billTitle = (dept == null ? "船运过磅单" : dept.getName() + "船运过磅单"); if (0 != pageNum) { billTitle += " - 第" + pageNum + "页"; } htmlStr = htmlStr.replace("billTitle", billTitle); htmlStr = htmlStr.replace("registerTime", data.getRegisterTime() == null ? "" : DateFormatUtils.format(data.getRegisterTime(), "yyyy-MM-dd HH:mm")); htmlStr = htmlStr.replace("completeTime", data.getCompleteTime() == null ? "" : DateFormatUtils.format(data.getCompleteTime(), "yyyy-MM-dd HH:mm")); htmlStr = htmlStr.replace("serId", data.getId()); if (InoutConstant.TYPE_IN.equals(data.getType())) { htmlStr = htmlStr.replace("customerName", data.getCustomerName()); htmlStr = htmlStr.replace("deptName", dept.getName()); } if (InoutConstant.TYPE_OUT.equals(data.getType())) { htmlStr = htmlStr.replace("customerName", dept.getName()); htmlStr = htmlStr.replace("deptName", data.getCustomerName()); } htmlStr = htmlStr.replace("plateNum", data.getPlateNum()); // 获取仓库信息 Depot depot = commonService.getCacheDepot(data.getCompanyId(), data.getDepotId()); htmlStr = htmlStr.replace("depotName", depot == null ? "" : depot.getName()); htmlStr = htmlStr.replace("foodVariety", FoodVariety.getMsg(data.getFoodVariety())); htmlStr = htmlStr.replace("foodLocation", StringUtils.isEmpty(data.getFoodLocation()) ? "" : data.getFoodLocation()); //必须倒序 for (int i = 30; i >= 1; i--) { if (i <= list.size()) { htmlStr = htmlStr.replace("carNum" + i, list.get(i - 1).getCarNum()); htmlStr = htmlStr.replace("full" + i, new DecimalFormat("0").format(list.get(i - 1).getFullWeight())); htmlStr = htmlStr.replace("empty" + i, new DecimalFormat("0").format(list.get(i - 1).getEmptyWeight())); htmlStr = htmlStr.replace("number" + i, new DecimalFormat("0").format(list.get(i - 1).getSettleWeight())); } else { htmlStr = htmlStr.replace("carNum" + i, ""); htmlStr = htmlStr.replace("full" + i, ""); htmlStr = htmlStr.replace("empty" + i, ""); htmlStr = htmlStr.replace("number" + i, ""); } } //添加结算信息 if (moreTag) { htmlStr = htmlStr.replace("handleUser", depot == null ? "" : (depot.getStoreKeeperName() == null ? "" : depot.getStoreKeeperName())); htmlStr = htmlStr.replace("remarks", data.getRemarks() == null ? "" : data.getRemarks()); htmlStr = htmlStr.replace("fullWeight", new DecimalFormat("0").format(data.getFullWeight())); htmlStr = htmlStr.replace("emptyWeight", new DecimalFormat("0").format(data.getEmptyWeight())); htmlStr = htmlStr.replace("settleWeight", new DecimalFormat("0").format(data.getSettleWeight())); } return htmlStr; } /** * 打印扦样单,直接返回条形码Base64图片 * * @param data * @return */ public String simpleBill(InoutCheckData data) { if (null == data.getId()) return null; if (null == data.getCheckId()) return null; if (null == data.getCheckTime()) { data.setCheckTime(new Date()); } String imgBase64 = BarCodeUtils.getBarCodeImageBase64(data.getId(), data.getCheckId(), "粮食样品单条码", DateFormatUtils.format(data.getCheckTime(), "yyyy-MM-dd HH:mm")); return imgBase64; } public static void main(String[] args) { List result = new ArrayList<>(); result.add("1"); result.add("2"); result.add("3"); result.add("4"); result.add("5"); result.add("6"); result.add("7"); result.add("8"); System.out.println(result); List strings1 = result.subList(0, 3); System.out.println(strings1); List strings2 = result.subList(3, 6); System.out.println(strings2); List strings3 = result.subList(6, 8); System.out.println(strings3); } }