Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java =================================================================== diff -u -r41194 -r41557 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java (.../DiposableGoodsAction.java) (revision 41194) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/DiposableGoodsAction.java (.../DiposableGoodsAction.java) (revision 41557) @@ -31,7 +31,6 @@ import com.beust.jcommander.ParameterException; import com.forgon.Constants; -import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.basedatamanager.certificate.service.CertificateManager; import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager; @@ -98,8 +97,6 @@ private ObjectDao objectDao; - private DateQueryAdapter dateQueryAdapter; - private CertificateManager certificateManager; private DisposableGoodsSyncDao disposableGoodsSyncDao; @@ -108,10 +105,6 @@ this.disposableGoodsSyncDao = disposableGoodsSyncDao; } - public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { - this.dateQueryAdapter = dateQueryAdapter; - } - public void setWareHouseManager(WareHouseManager wareHouseManager) { this.wareHouseManager = wareHouseManager; } @@ -1972,6 +1965,9 @@ if(!StringUtils.equals(origineDG.getWhetherToCharge(), disposableGoods.getWhetherToCharge())){ modifyContent.append("WhetherToCharge属性修改前=").append(origineDG.getWhetherToCharge()).append(",修改后=").append(disposableGoods.getWhetherToCharge()).append(";"); } + if(!StringUtils.equals(origineDG.getControlTagCHAS(), disposableGoods.getControlTagCHAS())){ + modifyContent.append("CHAS管控标识属性修改前=").append(origineDG.getControlTagCHAS()).append(",修改后=").append(disposableGoods.getControlTagCHAS()).append(";"); + } return modifyContent.toString(); } /** @@ -2101,4 +2097,18 @@ StrutsResponseUtils.output(result); } + /** + * 在“一次性物品管理”页面新增 ‍“同步 CHAS 标识”‍ 按钮 + */ + public void syncDisposableGoodsControlTagCHAS(){ + JSONObject result = JSONUtil.buildJsonObject(true, "同步成功"); + try { + diposableGoodsManager.syncDisposableGoodsControlTagCHAS(); + } catch (Exception e) { + e.printStackTrace(); + result = JSONUtil.buildJsonObject(false, "同步失败:" + e.getMessage()); + } + StrutsResponseUtils.output(result); + } + } Index: ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/spring/disposableGoodsChas.xml =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/spring/disposableGoodsChas.xml (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/spring/disposableGoodsChas.xml (revision 41557) @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/interfaces/mybatis/DisposableGoodsChasMakerMapper.xml =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/interfaces/mybatis/DisposableGoodsChasMakerMapper.xml (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/interfaces/mybatis/DisposableGoodsChasMakerMapper.xml (revision 41557) @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DisposableGoods.java =================================================================== diff -u -r39230 -r41557 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DisposableGoods.java (.../DisposableGoods.java) (revision 39230) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/DisposableGoods.java (.../DisposableGoods.java) (revision 41557) @@ -363,6 +363,18 @@ */ private String batchAndExpDateAllowBlank = Constants.STR_NO; + /** + * CHAS管控标识 + * “一次性物品定义”界面新增 ‍“CHAS 管控标识”‍ 单选框,选项为 ‍“是” / “否”‍,默认值 “否” GDSZYY-268 + */ + private String controlTagCHAS = Constants.STR_NO; + + /** + * 费用项目编码 + * 推送领用、退回信息时需要传费用项目编码 GDSZYY-268 + */ + private String chargeItemSerialNumber; + @JsonIgnore public static Map ColumnNameAndPoPropertyNameMap= new LinkedHashMap(8); @@ -1124,5 +1136,22 @@ public void setConsumptiveMaterialVolume(Integer consumptiveMaterialVolume) { this.consumptiveMaterialVolume = consumptiveMaterialVolume; } + + @Column(columnDefinition=" varchar(255) default '" + Constants.STR_NO + "' not null ") + public String getControlTagCHAS() { + return controlTagCHAS; + } + + public void setControlTagCHAS(String controlTagCHAS) { + this.controlTagCHAS = controlTagCHAS; + } + + public String getChargeItemSerialNumber() { + return chargeItemSerialNumber; + } + + public void setChargeItemSerialNumber(String chargeItemSerialNumber) { + this.chargeItemSerialNumber = chargeItemSerialNumber; + } } Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/DisposableGoodsChasMarkerDao.java =================================================================== diff -u --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/DisposableGoodsChasMarkerDao.java (revision 0) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/dao/DisposableGoodsChasMarkerDao.java (revision 41557) @@ -0,0 +1,18 @@ +package com.forgon.disinfectsystem.inventorymanagement.dao; + +import java.util.List; + +import com.forgon.disinfectsystem.inventorymanagement.model.DisposableGoodsChasMarkerVo; + +/** + * 一次性物品CHAS管控标识daoGDSZYY-268 + */ +public interface DisposableGoodsChasMarkerDao { + + /** + * 查询所有一次性物品CHAS管控标识vo + * @return 一次性物品CHAS管控标识vo + */ + List getAllDisposableGoodsChasMarker(); + +} Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/DisposableGoodsChasMarkerVo.java =================================================================== diff -u --- ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/DisposableGoodsChasMarkerVo.java (revision 0) +++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/inventorymanagement/model/DisposableGoodsChasMarkerVo.java (revision 41557) @@ -0,0 +1,47 @@ +package com.forgon.disinfectsystem.inventorymanagement.model; + +/** + * 一次性物品CHAS管控标识VOGDSZYY-268 + */ +public class DisposableGoodsChasMarkerVo { + + /** + * 物资编码 + */ + private String inventorySerialNumber; + + /** + * 费用项目编码 + */ + private String chargeItemSerialNumber; + + /** + * 是否CHAS管控标识 + */ + private boolean isChasMarker; + + public String getInventorySerialNumber() { + return inventorySerialNumber; + } + + public void setInventorySerialNumber(String inventorySerialNumber) { + this.inventorySerialNumber = inventorySerialNumber; + } + + public String getChargeItemSerialNumber() { + return chargeItemSerialNumber; + } + + public void setChargeItemSerialNumber(String chargeItemSerialNumber) { + this.chargeItemSerialNumber = chargeItemSerialNumber; + } + + public boolean getIsChasMarker() { + return isChasMarker; + } + + public void setIsChasMarker(boolean isChasMarker) { + this.isChasMarker = isChasMarker; + } + +} Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java =================================================================== diff -u -r41487 -r41557 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 41487) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManagerImpl.java (.../DiposableGoodsManagerImpl.java) (revision 41557) @@ -93,7 +93,9 @@ import com.forgon.disinfectsystem.entity.stocktakerecordmanager.StockDiposableGoods; import com.forgon.disinfectsystem.entity.systemwarning.SystemWarningItemVO; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.inventorymanagement.dao.DisposableGoodsChasMarkerDao; import com.forgon.disinfectsystem.inventorymanagement.dao.InventoryDao; +import com.forgon.disinfectsystem.inventorymanagement.model.DisposableGoodsChasMarkerVo; import com.forgon.disinfectsystem.inventorymanagement.model.Inventory; import com.forgon.disinfectsystem.vo.DisposableGoodsItemUsageVo; import com.forgon.disinfectsystem.vo.PriceAmount; @@ -118,6 +120,7 @@ import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.ConfigUtils; import com.forgon.tools.util.ForgonDateUtils; import com.forgon.tools.util.SqlUtils; @@ -155,6 +158,11 @@ private RunWithTransNewManager runWithTransNewManager; + private DisposableGoodsChasMarkerDao disposableGoodsChasMarkerDao; + + public void setDisposableGoodsChasMarkerDao(DisposableGoodsChasMarkerDao disposableGoodsChasMarkerDao) { + this.disposableGoodsChasMarkerDao = disposableGoodsChasMarkerDao; + } public void setRunWithTransNewManager(RunWithTransNewManager runWithTransNewManager) { this.runWithTransNewManager = runWithTransNewManager; } @@ -313,6 +321,7 @@ curDisposableGoods.setConsumptiveMaterialUse(disposableGoods.getConsumptiveMaterialUse()); curDisposableGoods.setConsumptiveMaterialVolume(disposableGoods.getConsumptiveMaterialVolume()); curDisposableGoods.setBatchAndExpDateAllowBlank(disposableGoods.getBatchAndExpDateAllowBlank()); + curDisposableGoods.setControlTagCHAS(disposableGoods.getControlTagCHAS()); } /** @@ -4051,4 +4060,120 @@ return disposableGoodsIdBatchNumberDisposableGoodsBatchMap; } + @Override + public Integer syncDisposableGoodsControlTagCHAS() { + boolean enableChasSystemTagPush = ConfigUtils.getSystemSetConfigByNameBool("enableChasSystemTagPush"); + if(!enableChasSystemTagPush){ + throw new SystemException("未开启enableChasSystemTagPush配置项!"); + } + if(disposableGoodsChasMarkerDao == null){ + throw new SystemException("disposableGoodsChasMarkerDao为null!"); + } + List disposableGoodsChasMarkerVoList = disposableGoodsChasMarkerDao.getAllDisposableGoodsChasMarker(); + if(CollectionUtils.isEmpty(disposableGoodsChasMarkerVoList)){ + throw new SystemException("视图查询返回结果为空,没有需要同步的数据!"); + } + List disposableGoodsList = this.getByHql(" inventorySerialNumber is not null and inventorySerialNumber <> '' "); + if(CollectionUtils.isEmpty(disposableGoodsList)){ + throw new SystemException("没有需要同步的一次性物品定义!"); + } + + Map inventorySerialNumberDisposableGoodsChasMarkerVoMap = new HashMap(); + for (DisposableGoodsChasMarkerVo disposableGoodsChasMarkerVo : disposableGoodsChasMarkerVoList) { + String inventorySerialNumber = disposableGoodsChasMarkerVo.getInventorySerialNumber(); + if(StringUtils.isNotBlank(inventorySerialNumber)){ + inventorySerialNumber = inventorySerialNumber.trim(); + disposableGoodsChasMarkerVo.setInventorySerialNumber(inventorySerialNumber); + } + String chargeItemSerialNumber = disposableGoodsChasMarkerVo.getChargeItemSerialNumber(); + if(StringUtils.isNotBlank(chargeItemSerialNumber)){ + chargeItemSerialNumber = chargeItemSerialNumber.trim(); + disposableGoodsChasMarkerVo.setChargeItemSerialNumber(chargeItemSerialNumber); + } + if(StringUtils.isNotBlank(disposableGoodsChasMarkerVo.getInventorySerialNumber())){ + inventorySerialNumberDisposableGoodsChasMarkerVoMap.put(disposableGoodsChasMarkerVo.getInventorySerialNumber(), disposableGoodsChasMarkerVo); + } + } + + if(MapUtils.isEmpty(inventorySerialNumberDisposableGoodsChasMarkerVoMap)){ + throw new SystemException("视图查询返回结果,物质编码都为空!"); + } + + StringBuffer updateSuccessLogBuffer = new StringBuffer(); + //同步成功的物质编码 + List successInventorySerialNumberList = new ArrayList(); + int updateAmount = 0; + for (DisposableGoods disposableGoods : disposableGoodsList) { + String inventorySerialNumber = disposableGoods.getInventorySerialNumber(); + DisposableGoodsChasMarkerVo disposableGoodsChasMarkerVo = inventorySerialNumberDisposableGoodsChasMarkerVoMap.get(inventorySerialNumber); + if(disposableGoodsChasMarkerVo == null){ + if(StringUtils.equals(Constants.STR_YES, disposableGoods.getControlTagCHAS())){ + disposableGoods.setControlTagCHAS(Constants.STR_NO); + objectDao.saveOrUpdate(disposableGoods); + updateSuccessLogBuffer.append(String.format("id=%s,CHAS管控标识修改为“否”;", disposableGoods.getId())); + updateAmount++; + } + }else{ + //修改前 + String oldControlTagCHAS = disposableGoods.getControlTagCHAS(); + String oldChargeItemSerialNumber = disposableGoods.getChargeItemSerialNumber(); + //修改后 + String newControlTagCHAS = disposableGoodsChasMarkerVo.getIsChasMarker() ? Constants.STR_YES : Constants.STR_NO; + String newChargeItemSerialNumber = disposableGoodsChasMarkerVo.getChargeItemSerialNumber(); + if(!StringUtils.equals(oldControlTagCHAS, newControlTagCHAS) + || !StringUtils.equals(oldChargeItemSerialNumber, newChargeItemSerialNumber)){ + disposableGoods.setControlTagCHAS(newControlTagCHAS); + disposableGoods.setChargeItemSerialNumber(newChargeItemSerialNumber); + objectDao.saveOrUpdate(disposableGoods); + String logMsg = String.format("id=%s,物资编码=%s," + + "修改前:CHAS管控标识修改为“%s”,费用项目编码为“%s”;" + + "修改后:CHAS管控标识修改为“%s”,费用项目编码为“%s”;", + disposableGoods.getId(), disposableGoods.getInventorySerialNumber(), + oldControlTagCHAS, oldChargeItemSerialNumber, + newControlTagCHAS, newChargeItemSerialNumber); + updateSuccessLogBuffer.append(logMsg); + updateAmount++; + } + successInventorySerialNumberList.add(inventorySerialNumber); + } + } + + //记录同步失败的日志 + /*StringBuffer failLogBuffer = new StringBuffer(); + for (DisposableGoodsChasMarkerVo disposableGoodsChasMarkerVo : disposableGoodsChasMarkerVoList) { + if(!successInventorySerialNumberList.contains(disposableGoodsChasMarkerVo.getInventorySerialNumber())){ + String controlTagCHAS = disposableGoodsChasMarkerVo.getIsChasMarker() ? Constants.STR_YES : Constants.STR_NO; + String logMsg = String.format("不存在物资编码为“%s”的一次性物品,CHAS管控标识为“%s”,费用项目编码为“%s”;", + disposableGoodsChasMarkerVo.getInventorySerialNumber(), controlTagCHAS, disposableGoodsChasMarkerVo.getChargeItemSerialNumber()); + failLogBuffer.append(logMsg); + } + }*/ + + StringBuffer logBuffer = new StringBuffer(String.format("一次性物品CHAS标识同步完成,一次性物品定义修改数量%s。", updateAmount)); + if(updateSuccessLogBuffer.length() > 0){ + logBuffer.append("一次性物品修改明细:"); + logBuffer.append(updateSuccessLogBuffer); + } + /*if(failLogBuffer.length() > 0){ + logBuffer.append("同步失败的一次性物品:"); + logBuffer.append(failLogBuffer); + }*/ + + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DISPOSABLEGOODS, Log.LOGGER_TYPE_UPDATE, logBuffer.toString()); + + return updateAmount; + } + + @Override + public void timingSyncDisposableGoodsControlTagCHAS() { + try { + logger.debug("开始定时同步一次性物品定义CHAS管控标识"); + Integer updateAmount = this.syncDisposableGoodsControlTagCHAS(); + logger.debug(String.format("完成定时同步一次性物品定义CHAS管控标识,一次性物品定义修改数量%s", updateAmount)); + } catch (Exception e) { + e.printStackTrace(); + logger.debug("定时同步一次性物品定义CHAS管控标识出现异常:" + e.getMessage()); + } + } + } Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java =================================================================== diff -u -r40675 -r41557 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java (.../DiposableGoodsManager.java) (revision 40675) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/DiposableGoodsManager.java (.../DiposableGoodsManager.java) (revision 41557) @@ -19,7 +19,6 @@ import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods; import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.invoicemanager.ThirdPartyChargeRecord; -import com.forgon.disinfectsystem.entity.returngoodsrecord.ThirdPartyRefundRecord; import com.forgon.disinfectsystem.inventorymanagement.model.Inventory; import com.forgon.disinfectsystem.vo.DisposableGoodsItemUsageVo; import com.forgon.disinfectsystem.vo.PriceAmount; @@ -422,5 +421,15 @@ * 批次库存关联的批次定义不存在时,生成批次定义CSSZXYY-182 */ public void updateDisposableGoodsBatchStockBatchIsNull(); + + /** + * 同步一次性物品定义CHAS管控标识 GDSZYY-268 + */ + public Integer syncDisposableGoodsControlTagCHAS(); + + /** + * 定时同步一次性物品定义CHAS管控标识 GDSZYY-268 + */ + public void timingSyncDisposableGoodsControlTagCHAS(); } Index: ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/spring/timer.xml =================================================================== diff -u -r28878 -r41557 --- ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/spring/timer.xml (.../timer.xml) (revision 28878) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdszyy/spring/timer.xml (.../timer.xml) (revision 41557) @@ -43,13 +43,35 @@ + + + + + + + timingSyncDisposableGoodsControlTagCHAS + + + + + + + + + + 0 0 0,12 * * ? + + + + +