Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlanPrintRecord.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlanPrintRecord.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoicePlanPrintRecord.java (revision 29658) @@ -0,0 +1,138 @@ +package com.forgon.disinfectsystem.entity.invoicemanager; + +import java.util.Date; +import java.util.List; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Transient; + +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +import com.forgon.disinfectsystem.entity.printRecyclingApplicationConfig.PrintConfig; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.security.model.User; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; + +/** + * 批量打印发货计划记录(GDSZYY-35) + * @author ZhouPeiMian + * + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +public class InvoicePlanPrintRecord { + + private Long id; + + /** + * 批量打印发货计划的班次定义id(控制面板-参数设置-批量打印发货计划设置中进行设置) + */ + private Long printConfigId; + + /** + * 打印开始时间(日期时间类型) + */ + private Date startDate; + + /** + * 打印结束时间(日期时间类型) + */ + private Date endDate; + + /** + * 打印人id(关联用户表的id,用于后面获取打印人姓名) + */ + private Long printUserId; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getPrintConfigId() { + return printConfigId; + } + + public void setPrintConfigId(Long printConfigId) { + this.printConfigId = printConfigId; + } + + public Date getStartDate() { + return startDate; + } + + public void setStartDate(Date startDate) { + this.startDate = startDate; + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + this.endDate = endDate; + } + + public Long getPrintUserId() { + return printUserId; + } + + public void setPrintUserId(Long printUserId) { + this.printUserId = printUserId; + } + + /** + * 获取打印人 + * @param dao + * @return + */ + @Transient + public User getPrintUser(ObjectDao dao){ + if(!DatabaseUtil.isPoIdValid(printUserId)){ + return null; + } + return (User) dao.getById(User.class.getSimpleName(), printUserId); + } + + /** + * 获取批量打印发货计划的班次定义 + * @param dao + * @return + */ + @Transient + public PrintConfig getPrintConfig(ObjectDao dao){ + if(!DatabaseUtil.isPoIdValid(printConfigId)){ + return null; + } + return (PrintConfig) dao.getById(PrintConfig.class.getSimpleName(), printConfigId); + } + + /** + * 获取本批次所打印的申请单上的申请项(TousseItem) + * @param dao + * @return + */ + @SuppressWarnings("unchecked") + @Transient + public List getPrintedTousseItems(ObjectDao dao){ + if(!DatabaseUtil.isPoIdValid(id)){ + return null; + } + String hql = String.format(" select ti from %s ti, %s tr where ti.id = tr.tousseItemId and tr.printRecordId = %s ", + TousseItem.class.getSimpleName(), TousseItem_PrintRecord.class.getSimpleName(), + id); + return dao.findByHql(hql); + } + +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanPrintRecordManager.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanPrintRecordManager.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanPrintRecordManager.java (revision 29658) @@ -0,0 +1,31 @@ +package com.forgon.disinfectsystem.recyclingapplication.service; + +import net.sf.json.JSONArray; + +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlanPrintRecord; +import com.forgon.tools.hibernate.BasePoManager; + +/** + * 批量打印发货计划记录接口 + * @author ZhouPeiMian + * @since 2020-11-23 + * + */ +public interface InvoicePlanPrintRecordManager extends BasePoManager{ + + /** + * 查询【批量打印发货计划记录】 + * @param startDate 开始时间 + * @param endDate 结束时间 + * @return + */ + public JSONArray findInvoicePlanPrintRecordList(String startDate, String endDate); + + /** + * 打印一次性物品汇总单(GDSZYY-35) + * @param printRecordIds + * @return + */ + public JSONArray printDisposableGoodsInvoicePlanSummary(String printRecordIds); + +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r29623 -r29658 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29623) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 29658) @@ -82,6 +82,8 @@ import com.forgon.disinfectsystem.entity.goodsstock.GoodsStock; import com.forgon.disinfectsystem.entity.invoicemanager.Invoice; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlanPrintRecord; +import com.forgon.disinfectsystem.entity.invoicemanager.TousseItem_PrintRecord; import com.forgon.disinfectsystem.entity.invoicemanager.enums.BorrowConfirmStatus; import com.forgon.disinfectsystem.entity.packing.PackingTask; import com.forgon.disinfectsystem.entity.printRecyclingApplicationConfig.PrintConfig; @@ -1923,13 +1925,14 @@ */ @Override public void getPrintObjectOfDept(JSONObject printScope, - String departCode, String printUser, List summaryList) { + String departCode, String printUser, List summaryList, List printedTousseItems) { List tousseTypes = getPrintTousseTypes(printScope); // 一次查询出所有需要打印的TousseItem List allTousseItems = getPrintTousseItems(tousseTypes, departCode,printScope); + printedTousseItems.addAll(allTousseItems); //批量打印日志输出 JsonConfig config = new JsonConfig(); config.setExcludes(new String[]{"recyclingRecord","invoicePlan","recyclingErrors","recyclingDamages"}); @@ -7968,6 +7971,7 @@ allNeedToPrintDept[i] = orgUnits.get(i).getOrgUnitCoding(); } + List allPrintedTousseItems = new ArrayList(); // 判断有没项目个性化打印的配置 String customProject = printScope.optString("customProject"); if (StringUtils.isNotBlank(customProject)){ @@ -7984,7 +7988,7 @@ populateSummaryList(printScope, allTousseItems, printSummaryList, 8, true, true, shiftName, "",false); setPrintInfo(printUser, printSummaryList); - + allPrintedTousseItems.addAll(allTousseItems); } } }else{ @@ -8017,9 +8021,35 @@ } String printUser = AcegiHelper.getLoginUserFullName(); + Date startDate = new Date(); for (OrgUnit orgUnit : orgUnits) { - getPrintObjectOfDept(printScope, orgUnit.getOrgUnitCoding(), printUser, printSummaryList); + List printedTousseItems = new ArrayList(); + getPrintObjectOfDept(printScope, orgUnit.getOrgUnitCoding(), printUser, printSummaryList, printedTousseItems); + allPrintedTousseItems.addAll(printedTousseItems); } + + // 增加批量打印发货计划记录(GDSZYY-35) + boolean printDisposableGoodsInvoicePlanSummary = + ConfigUtils.getSystemSetConfigByNameBool("printDisposableGoodsInvoicePlanSummary", false); + if(printDisposableGoodsInvoicePlanSummary){ + List tousseItem_PrintRecordList = new ArrayList(); + InvoicePlanPrintRecord printRecord = new InvoicePlanPrintRecord(); + printRecord.setStartDate(startDate); + printRecord.setPrintConfigId(config.getId()); + printRecord.setPrintUserId(AcegiHelper.getLoginUser().getUserId()); + printRecord.setEndDate(new Date()); + objectDao.saveOrUpdate(printRecord); + // 本批次所打印的申请单上的申请项(TousseItem),要关联到本次创建的【批量打印发货计划记录】 + if(CollectionUtils.isNotEmpty(allPrintedTousseItems)){ + for (TousseItem tousseItem : allPrintedTousseItems) { + TousseItem_PrintRecord temp = new TousseItem_PrintRecord(); + temp.setPrintRecordId(printRecord.getId()); + temp.setTousseItemId(tousseItem.getId()); + tousseItem_PrintRecordList.add(temp); + } + objectDao.batchSaveOrUpdate(tousseItem_PrintRecordList); + } + } } if(printSummaryList.size() <= 0){ throw new SystemException("属于【" + shiftName + "】的科室没有需要打印的申请单。"); @@ -8095,11 +8125,14 @@ @SuppressWarnings("unchecked") @Override - public JSONArray printDisposableGoodsInvoicePlanSummary(String inventorySerialNumbers, String startTime, String endTime) { + public JSONArray printDisposableGoodsInvoicePlanSummary(String inventorySerialNumbers, String printRecordIds, String startTime, String endTime) { JSONArray jsonArray = new JSONArray(); - if(StringUtils.isBlank(inventorySerialNumbers) || StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime)){ + if(StringUtils.isBlank(inventorySerialNumbers)){ return jsonArray; } + if(StringUtils.isBlank(printRecordIds) && (StringUtils.isBlank(startTime) || StringUtils.isBlank(endTime))){ + return jsonArray; + } // 根据二沙岛、芳村、大学城分院的科室编码 String[] orgUnitCodings = {"002","003","005"}; @@ -8157,6 +8190,10 @@ allOrgUnitIds.add(orgUnit.getId()); } + if(CollectionUtils.isEmpty(allOrgUnitIds)){ + continue; + } + JSONObject content = new JSONObject(); content.put("header", disposableGoodsNames); JSONArray body = new JSONArray(); @@ -8165,6 +8202,7 @@ + " join %s ou on ip.departCoding = ou.orgUnitCoding " + " join %s dg on ti.disposableGoodsId = dg.id " + " join %s src on src.orgUnitCoding = ou.orgUnitCoding " + + " join %s tr on tr.tousseItemId = ti.id " + " where (1=1) " + " and src.supplyRoomType = %s " + " and ti.tousseType = '%s' " @@ -8175,8 +8213,9 @@ + " and ip.committedstatus = 1 ", // 未提交的单据不打印,处于暂存状态 TousseItem.class.getSimpleName(), InvoicePlan.class.getSimpleName(), OrgUnit.class.getSimpleName(), DisposableGoods.class.getSimpleName(), - SupplyRoomConfig.class.getSimpleName(), SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY, - DisposableGoods.TYPE_NAME, InvoicePlan.DELIVERSTATUS_AWAITDELIVER); + SupplyRoomConfig.class.getSimpleName(), TousseItem_PrintRecord.class.getSimpleName(), + SupplyRoomConfig.SUPPLYROOM_TYPE_APPLY, DisposableGoods.TYPE_NAME, + InvoicePlan.DELIVERSTATUS_AWAITDELIVER); if(CollectionUtils.isNotEmpty(disposableGoodsList)){ sql += " and " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("dg.id", disposableGoodsIds); @@ -8193,6 +8232,11 @@ sql += String.format(" and (ip.printTime >= %s and ip.printTime <= %s) ", start, end); } + // 根据打印记录id过滤 + if(StringUtils.isNotBlank(printRecordIds)){ + sql += SqlUtils.get_InSql("tr.printRecordId", printRecordIds.split(";")); + } + sql += " order by src.sequence "; ResultSet rs = null; try { Index: ssts-web/src/test/java/test/forgon/disinfectsystem/application/service/InvoicePlanPrint2ByApplyNumberTests.java =================================================================== diff -u -r26085 -r29658 --- ssts-web/src/test/java/test/forgon/disinfectsystem/application/service/InvoicePlanPrint2ByApplyNumberTests.java (.../InvoicePlanPrint2ByApplyNumberTests.java) (revision 26085) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/application/service/InvoicePlanPrint2ByApplyNumberTests.java (.../InvoicePlanPrint2ByApplyNumberTests.java) (revision 29658) @@ -105,7 +105,7 @@ List printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(2, printList.size()); @@ -263,7 +263,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -343,7 +343,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -514,7 +514,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -591,7 +591,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -969,7 +969,7 @@ List printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(1, printList.size()); @@ -1337,7 +1337,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(3, summaryList.size()); @@ -1423,7 +1423,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanPrintRecordManagerImpl.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanPrintRecordManagerImpl.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanPrintRecordManagerImpl.java (revision 29658) @@ -0,0 +1,81 @@ +package com.forgon.disinfectsystem.recyclingapplication.service; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import com.forgon.databaseadapter.service.DateQueryAdapter; +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlanPrintRecord; +import com.forgon.disinfectsystem.entity.invoicemanager.TousseItem_PrintRecord; +import com.forgon.disinfectsystem.entity.printRecyclingApplicationConfig.PrintConfig; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.security.model.User; +import com.forgon.tools.date.DateTools; +import com.forgon.tools.hibernate.BasePoManagerImpl; + +public class InvoicePlanPrintRecordManagerImpl extends BasePoManagerImpl implements + InvoicePlanPrintRecordManager { + + private DateQueryAdapter dateQueryAdapter; + + public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { + this.dateQueryAdapter = dateQueryAdapter; + } + + @Override + public JSONArray findInvoicePlanPrintRecordList(String startDate, String endDate) { + String startDateSql = ""; + if(StringUtils.isNotBlank(startDate) && StringUtils.isNotBlank(endDate)){ + startDateSql = " and " + dateQueryAdapter.dateAreaSql("po.startDate", startDate, endDate, true); + } + String hql = String.format(" select po, usr, config, ti from %s po, %s usr, %s config, %s ti, %s tr " + + " where po.printUserId = usr.id " + + " and po.printConfigId = config.id " + + " and po.id = tr.printRecordId " + + " and ti.id = tr.tousseItemId " + + " and ti.diposable is not null and ti.diposable = '%s' %s", + InvoicePlanPrintRecord.class.getSimpleName(), User.class.getSimpleName(), + PrintConfig.class.getSimpleName(), TousseItem.class.getSimpleName(), + TousseItem_PrintRecord.class.getSimpleName(), TousseItem.DIPOSABLE_YES, + startDateSql); + List list = objectDao.findByHql(hql); + if(CollectionUtils.isEmpty(list)){ + throw new RuntimeException("未找到一次性物品的打印批次"); + } + JSONArray result = new JSONArray(); + Map invoicePlanPrintRecordMap = new HashMap(); + for (int i=0; i printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(1, printList.size()); @@ -178,7 +178,7 @@ List printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(1, printList.size()); @@ -336,7 +336,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -405,7 +405,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); //因为器械包申请单和一次性物品申请单的物品未回收,所以只会打印1张一次性物品申请单 assertEquals(1, summaryList.size()); Index: ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r29647 -r29658 --- ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 29647) +++ ssts-web/src/main/webapp/WEB-INF/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 29658) @@ -1874,7 +1874,19 @@ + + + + + + + + + + Index: ssts-web/src/test/java/test/forgon/disinfectsystem/application/service/InvoicePlanPrintByApplyNumberTests.java =================================================================== diff -u -r26085 -r29658 --- ssts-web/src/test/java/test/forgon/disinfectsystem/application/service/InvoicePlanPrintByApplyNumberTests.java (.../InvoicePlanPrintByApplyNumberTests.java) (revision 26085) +++ ssts-web/src/test/java/test/forgon/disinfectsystem/application/service/InvoicePlanPrintByApplyNumberTests.java (.../InvoicePlanPrintByApplyNumberTests.java) (revision 29658) @@ -97,7 +97,7 @@ List printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(1, printList.size()); @@ -172,7 +172,7 @@ List printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(1, printList.size()); @@ -307,7 +307,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -366,7 +366,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -523,7 +523,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -620,7 +620,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); @@ -773,7 +773,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(3, summaryList.size()); @@ -909,7 +909,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(3, summaryList.size()); @@ -1254,7 +1254,7 @@ List printList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", printList); + "testNeike", "李晓敏", printList, new ArrayList()); assertEquals(1, printList.size()); @@ -1616,7 +1616,7 @@ List summaryList = new ArrayList(); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testNeike", "李晓敏", summaryList); + "testNeike", "李晓敏", summaryList, new ArrayList()); assertEquals(3, summaryList.size()); @@ -1702,7 +1702,7 @@ summaryList.clear(); assertEquals(0, summaryList.size()); recyclingApplicationManager.getPrintObjectOfDept(printScope, - "testWaike", "李晓敏", summaryList); + "testWaike", "李晓敏", summaryList, new ArrayList()); assertEquals(2, summaryList.size()); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r29555 -r29658 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 29555) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 29658) @@ -157,7 +157,7 @@ String depart, String departCoding, String remark,Date applicationCreateDate,Map urgentNameAmount,Long useRecordId); public void getPrintObjectOfDept(JSONObject printScope, - String departCode, String printUser, List summaryList); + String departCode, String printUser, List summaryList, List printedTousseItems); /** * 是否有当天打印的申请物品 * @param departCode @@ -512,9 +512,13 @@ /** * 打印一次性物品汇总单(GDSZYY-14) + * @param inventorySerialNumbers 一次性物品定义的物资编码 + * @param printRecordIds 批量打印发货计划记录id + * @param startTime 打印的开始时间 + * @param endTime 打印的结束时间 * @return */ - public JSONArray printDisposableGoodsInvoicePlanSummary(String inventorySerialNumbers, String startTime, String endTime); + public JSONArray printDisposableGoodsInvoicePlanSummary(String inventorySerialNumbers, String printRecordIds, String startTime, String endTime); /** * 一个科室只能填写一张未打印并且未发货的一次性物品申请单(GDSZYY-36) Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanPrintRecordAction.java =================================================================== diff -u --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanPrintRecordAction.java (revision 0) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/InvoicePlanPrintRecordAction.java (revision 29658) @@ -0,0 +1,66 @@ +package com.forgon.disinfectsystem.recyclingapplication.action; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.lang.StringUtils; +import org.apache.struts2.convention.annotation.Action; +import org.apache.struts2.convention.annotation.Namespace; +import org.apache.struts2.convention.annotation.ParentPackage; + +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlanPrintRecord; +import com.forgon.disinfectsystem.recyclingapplication.service.InvoicePlanPrintRecordManager; +import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.json.JSONUtil; +import com.opensymphony.xwork2.ModelDriven; +import com.opensymphony.xwork2.Preparable; + +@ParentPackage(value = "default") +@Namespace(value = "/disinfectSystem") +@Action(value = "invoicePlanPrintRecordAction") +public class InvoicePlanPrintRecordAction implements ModelDriven, Preparable { + + private InvoicePlanPrintRecord invoicePlanPrintRecord; + + private InvoicePlanPrintRecordManager invoicePlanPrintRecordManager; + + public void setInvoicePlanPrintRecordManager( + InvoicePlanPrintRecordManager invoicePlanPrintRecordManager) { + this.invoicePlanPrintRecordManager = invoicePlanPrintRecordManager; + } + + /** + * 查询批量打印发货计划记录 + * @param configId 打印发货计划班次id + * @param startDate 开始时间 + * @param endDate 结束时间 + */ + public void findInvoicePlanPrintRecordList(){ + String startDate = StrutsParamUtils.getPraramValue("startDate", null); + try { + JSONArray result = invoicePlanPrintRecordManager.findInvoicePlanPrintRecordList(startDate, startDate); + JSONObject jsonObj = JSONUtil.buildJsonObject(true, result); + StrutsResponseUtils.output(jsonObj); + } catch (Exception e) { + JSONObject jsonObj = JSONUtil.buildJsonObject(false, e.getMessage()); + StrutsResponseUtils.output(jsonObj); + } + } + + @Override + public void prepare() throws Exception { + String id = StrutsParamUtils.getPraramValue("id", ""); + if (StringUtils.isNotBlank(id) && !id.equals("0")) { + invoicePlanPrintRecord = invoicePlanPrintRecordManager.get(id); + } else { + invoicePlanPrintRecord = new InvoicePlanPrintRecord(); + } + } + + @Override + public InvoicePlanPrintRecord getModel() { + return invoicePlanPrintRecord; + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/TousseItem_PrintRecord.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/TousseItem_PrintRecord.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/TousseItem_PrintRecord.java (revision 29658) @@ -0,0 +1,59 @@ +package com.forgon.disinfectsystem.entity.invoicemanager; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import org.hibernate.annotations.DynamicInsert; +import org.hibernate.annotations.DynamicUpdate; + +/** + * 申请的物品和发货计划打印记录的关联表 + * @author ZhouPeiMian + * @since 2020-11-24 + */ +@Entity +@DynamicInsert(false) +@DynamicUpdate(true) +public class TousseItem_PrintRecord { + + private Long id; + + /** + * 物品(TousseItem)Id + */ + private Long tousseItemId; + + /** + * 批量打印发货计划记录(InvoicePlanPrintRecord)id + */ + private Long printRecordId; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getTousseItemId() { + return tousseItemId; + } + + public void setTousseItemId(Long tousseItemId) { + this.tousseItemId = tousseItemId; + } + + public Long getPrintRecordId() { + return printRecordId; + } + + public void setPrintRecordId(Long printRecordId) { + this.printRecordId = printRecordId; + } + +} Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java =================================================================== diff -u -r29555 -r29658 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 29555) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/action/RecyclingApplicationAction.java (.../RecyclingApplicationAction.java) (revision 29658) @@ -1621,7 +1621,8 @@ String inventorySerialNumbers = StrutsParamUtils.getPraramValue("inventorySerialNumber", null); String startDate = StrutsParamUtils.getPraramValue("startDate", ""); String endDate = StrutsParamUtils.getPraramValue("endDate", ""); - JSONArray result = recyclingApplicationManager.printDisposableGoodsInvoicePlanSummary(inventorySerialNumbers, startDate, endDate); + String printRecordIds = StrutsParamUtils.getPraramValue("printRecordIds", null); + JSONArray result = recyclingApplicationManager.printDisposableGoodsInvoicePlanSummary(inventorySerialNumbers, printRecordIds, startDate, endDate); StrutsResponseUtils.output(true, result); } catch (Exception e) { e.printStackTrace();