diff --git a/ant-design-vue-jeecg/pom.xml b/ant-design-vue-jeecg/pom.xml index ab63db4..c913a76 100644 --- a/ant-design-vue-jeecg/pom.xml +++ b/ant-design-vue-jeecg/pom.xml @@ -46,7 +46,7 @@ <goal>install-node-and-npm</goal> </goals> <configuration> - <nodeVersion>v16.19.0</nodeVersion> + <nodeVersion>16.19.0</nodeVersion> <npmVersion>8.19.3</npmVersion> </configuration> </execution> diff --git a/ant-design-vue-jeecg/src/views/system/inventory/InventoryMaterialSummaryList.vue b/ant-design-vue-jeecg/src/views/system/inventory/InventoryMaterialSummaryList.vue index d257270..7183764 100644 --- a/ant-design-vue-jeecg/src/views/system/inventory/InventoryMaterialSummaryList.vue +++ b/ant-design-vue-jeecg/src/views/system/inventory/InventoryMaterialSummaryList.vue @@ -18,12 +18,6 @@ </a-upload> <!-- 高级查询区域 --> <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item> - </a-menu> - <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button> - </a-dropdown> </div> <!-- table区域-begin --> @@ -68,25 +62,6 @@ </a-button> </template> - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">编辑</a> - - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">更多 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a @click="handleDetail(record)">详情</a> - </a-menu-item> - <a-menu-item> - <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> - <a>删除</a> - </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> - </span> - </a-table> </div> @@ -165,14 +140,6 @@ title:'物料总数', align:"center", dataIndex: 'qty' - }, - { - title: '操作', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } } ], url: { diff --git a/ant-design-vue-jeecg/src/views/system/inventory/subTables/InventoryDetailSubTable.vue b/ant-design-vue-jeecg/src/views/system/inventory/subTables/InventoryDetailSubTable.vue index 764a282..914df6e 100644 --- a/ant-design-vue-jeecg/src/views/system/inventory/subTables/InventoryDetailSubTable.vue +++ b/ant-design-vue-jeecg/src/views/system/inventory/subTables/InventoryDetailSubTable.vue @@ -74,14 +74,7 @@ </a-button> </template> - <span slot="action" slot-scope="text, record"> - <a v-has="'inventoryDetail:edit'" @click="handleEdit(record)">编辑</a> - <a-divider type="vertical"/> - <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> - <a v-has="'inventoryDetail:add'">删除</a> - </a-popconfirm> - </span> </a-table> </div> @@ -227,15 +220,11 @@ export default { { title: '更新日期', align: "center", - dataIndex: 'updateTime' - }, - { - title: '操作', - dataIndex: 'action', - align: "center", fixed: "right", + dataIndex: 'updateTime', width: 147, scopedSlots: {customRender: 'action'}, + } ], url: { diff --git a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue index 00ab63e..fb50adb 100644 --- a/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue +++ b/ant-design-vue-jeecg/src/views/system/receipt/ReceiptHeaderList.vue @@ -104,7 +104,7 @@ <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> <a-button type="primary" icon="import">导入</a-button> - <a-button v-has="'receiptHeader:print'"@click="batchPrint()" type="primary">打印</a-button> + <a-button v-has="'receiptHeader:print'" @click="batchPrint()" type="primary">打印</a-button> </a-upload> <!-- 高级查询区域 --> <!-- <j-super-query :fieldList="superFieldList" ref="superQueryModal"--> diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java index 829c965..e431c94 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/monitor/operation/service/impl/OperationLogServiceImpl.java @@ -7,6 +7,7 @@ import org.jeecg.modules.wms.monitor.operation.entity.OperationLog; import org.jeecg.modules.wms.monitor.operation.mapper.OperationLogMapper; import org.jeecg.modules.wms.monitor.operation.service.IOperationLogService; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail; +import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; import org.jeecg.utils.StringUtils; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -44,7 +45,7 @@ public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, Ope if (receiptContainerDetail == null || receiptContainerDetail.getUniqueCode() == null) { continue; } - String msg = StrUtil.format("上游单号:{},入库单据号:{},仓库编码:{},托盘编码:{},物料编码:{},入库数量:{}", receiptContainerDetail.getReferCode(), + String msg = StrUtil.format("上游单号:{},入库单据号:{},仓库编码:{},托盘编码:{},物料编码:{},数量:{}", receiptContainerDetail.getReferCode(), receiptContainerDetail.getReceiptCode(), receiptContainerDetail.getWarehouseCode(), receiptContainerDetail.getContainerCode(), receiptContainerDetail.getMaterialCode(), receiptContainerDetail.getQty()); OperationLog operationLog = new OperationLog(); @@ -61,16 +62,40 @@ public class OperationLogServiceImpl extends ServiceImpl<OperationLogMapper, Ope operationLogList.add(operationLog); } } + if (logDTO.getBizType().equals("入库单追踪")) { + List<ReceiptDetail> receiptDetailList = JSON.parseArray(logDTO.getExtra(), ReceiptDetail.class); + if (CollectionUtils.isEmpty(receiptDetailList)) { + return true; + } + for (ReceiptDetail receiptDetail : receiptDetailList) { + if (receiptDetail == null || receiptDetail.getReceiptCode() == null) { + continue; + } + String msg = StrUtil.format("物料编码:{},数量:{},已收数量:{}", receiptDetail.getMaterialCode(), receiptDetail.getQty(), receiptDetail.getTaskQty()); + OperationLog operationLog = new OperationLog(); + operationLog.setBizId(receiptDetail.getReceiptCode()); + operationLog.setOperationMsg(StringUtils.substring(msg, 0, 1000)); + operationLog.setBizType(logDTO.getBizType()); + operationLog.setBizTag(logDTO.getTag()); + operationLog.setContentException(StringUtils.substring(logDTO.getException(), 0, 1000)); + operationLog.setContentReturn(StringUtils.substring(logDTO.getReturnStr(), 0, 1000)); + operationLog.setOperationCostTime(logDTO.getExecutionTime()); + operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0); + operationLog.setOperationTime(logDTO.getOperateDate()); + operationLog.setOperatorName(logDTO.getOperatorId()); + operationLogList.add(operationLog); + } + } } if (!StringUtils.isEmpty(logDTO.getBizId())) { OperationLog operationLog = new OperationLog(); operationLog.setBizId(logDTO.getBizId()); + operationLog.setOperationMsg(StringUtils.substring(logDTO.getMsg(), 0, 1000)); operationLog.setBizType(logDTO.getBizType()); operationLog.setBizTag(logDTO.getTag()); operationLog.setContentException(StringUtils.substring(logDTO.getException(), 0, 1000)); operationLog.setContentReturn(StringUtils.substring(logDTO.getReturnStr(), 0, 1000)); operationLog.setOperationCostTime(logDTO.getExecutionTime()); - operationLog.setOperationMsg(StringUtils.substring(logDTO.getMsg(), 0, 1000)); operationLog.setOperationStatus(logDTO.getSuccess().equals(true) ? 1 : 0); operationLog.setOperationTime(logDTO.getOperateDate()); operationLog.setOperatorName(logDTO.getOperatorId()); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/entity/ReceiptContainerDetail.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/entity/ReceiptContainerDetail.java index 67aecf9..81af760 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/entity/ReceiptContainerDetail.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/entity/ReceiptContainerDetail.java @@ -95,6 +95,7 @@ public class ReceiptContainerDetail implements Serializable { @Excel(name = "项目号", width = 15) @ApiModelProperty(value = "项目号") private String project; + @Excel(name = "唯一号", width = 15) @ApiModelProperty(value = "唯一号") private String uniqueCode; /** 备用字段1 */ diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java index 71c442f..32199d6 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptDetailServiceImpl.java @@ -1,5 +1,6 @@ package org.jeecg.modules.wms.receipt.receiptHeader.service.impl; +import com.alibaba.fastjson.JSON; import com.aliyun.oss.ServiceException; import org.jeecg.common.api.vo.Result; import org.jeecg.modules.wms.config.material.entity.Material; @@ -9,11 +10,18 @@ import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; import org.jeecg.modules.wms.receipt.receiptHeader.mapper.ReceiptDetailMapper; import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService; import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; +import org.jeecg.utils.HuahengJwtUtil; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; import org.springframework.stereotype.Service; + +import java.util.ArrayList; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import cn.monitor4all.logRecord.annotation.OperationLog; +import cn.monitor4all.logRecord.context.LogRecordContext; + import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; @@ -42,6 +50,7 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R } @Override + @OperationLog(bizId = "''", bizType = "'入库单追踪'", tag = "'入库详情添加'", extra = "#extraJsonString", msg = "''", operatorId = "#username", recordReturnValue = true) public Result saveReceiptDetail(ReceiptDetail receiptDetail) { ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptDetail.getReceiptId()); if (receiptHeader == null) { @@ -79,6 +88,11 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R if (!success) { throw new ServiceException("添加失败, 保存入库单详失败"); } + // 操作日志收集 + List<ReceiptDetail> receiptDetailList = new ArrayList<ReceiptDetail>(); + receiptDetailList.add(receiptDetail); + LogRecordContext.putVariable("username", HuahengJwtUtil.getCurrentOperator()); + LogRecordContext.putVariable("extraJsonString", JSON.toJSONString(receiptDetailList)); return Result.OK("添加成功!"); } } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java index 739c4f0..bd39666 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptHeader/service/impl/ReceiptHeaderServiceImpl.java @@ -1,17 +1,13 @@ package org.jeecg.modules.wms.receipt.receiptHeader.service.impl; -import java.io.Serializable; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Collection; -import java.util.Date; -import java.util.List; - -import javax.annotation.Resource; - +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.util.DateUtils; import org.jeecg.modules.wms.config.receiptType.entity.ReceiptType; import org.jeecg.modules.wms.config.receiptType.service.IReceiptTypeService; +import org.jeecg.modules.wms.config.receiptType.service.impl.ReceiptTypeServiceImpl; import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptDetail; import org.jeecg.modules.wms.receipt.receiptHeader.entity.ReceiptHeader; import org.jeecg.modules.wms.receipt.receiptHeader.mapper.ReceiptDetailMapper; @@ -19,16 +15,27 @@ import org.jeecg.modules.wms.receipt.receiptHeader.mapper.ReceiptHeaderMapper; import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptDetailService; import org.jeecg.modules.wms.receipt.receiptHeader.service.IReceiptHeaderService; import org.jeecg.modules.wms.receipt.receiptHeaderHistory.service.IReceiptHeaderHistoryService; +import org.jeecg.utils.HuahengJwtUtil; import org.jeecg.utils.StringUtils; import org.jeecg.utils.constant.QuantityConstant; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import cn.monitor4all.logRecord.annotation.OperationLog; +import cn.monitor4all.logRecord.context.LogRecordContext; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; -import com.aliyun.oss.ServiceException; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import javax.annotation.Resource; +import java.io.Serializable; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Collection; /** * @Description: 入库表主表 @@ -53,18 +60,18 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R private IReceiptHeaderHistoryService receiptHeaderHistoryService; /** - * @param id 入库单主表id - * @param reason 进入历史单据的原因 + * @param id 入库单主表id + * @param reason 进入历史单据的原因 * @return */ @Override @Transactional - public boolean delMain(String id, String reason) { + public boolean delMain(String id,String reason) { ReceiptHeader receiptHeader = getById(id); if (receiptHeader.getFirstStatus().intValue() > QuantityConstant.RECEIPT_HEADER_BUILD) { throw new ServiceException("不能删除非新建状态单据"); } - receiptHeaderHistoryService.saveById(id, reason); + receiptHeaderHistoryService.saveById(id,reason); boolean success = receiptDetailMapper.deleteByMainId(id); if (!success) { @@ -89,6 +96,8 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R @Override @Transactional + @OperationLog(bizId = "#receiptHeader.getCode()", bizType = "'入库单追踪'", tag = "'入库单生成'", + msg = "'上游单号:'+ #receiptHeader.getReferCode() + ',仓库编码:' + #receiptHeader.getWarehouseCode()", operatorId = "#username", recordReturnValue = true) public Result<ReceiptHeader> saveReceiptHeader(ReceiptHeader receiptHeader) { LambdaQueryWrapper<ReceiptType> lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptType::getCode, receiptHeader.getType()).eq(ReceiptType::getWarehouseCode, receiptHeader.getWarehouseCode()); @@ -107,6 +116,7 @@ public class ReceiptHeaderServiceImpl extends ServiceImpl<ReceiptHeaderMapper, R if (!success) { return Result.OK("添加失败!"); } + LogRecordContext.putVariable("username", HuahengJwtUtil.getCurrentOperator()); return Result.OK("添加成功!", receiptHeader); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java index e388a5b..45aa1ab 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentHeader/entity/ShipmentDetail.java @@ -107,8 +107,7 @@ public class ShipmentDetail implements Serializable { /** 上游行号 */ @Excel(name = "上游行号", width = 15) @ApiModelProperty(value = "上游行号") - private String referLineNum; - /** 备用字段1 */ + private String referLineNum; /** 备用字段1 */ @Excel(name = "备用字段1", width = 15) @ApiModelProperty(value = "备用字段1") private String userdef1; diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskDetail.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskDetail.java index d1d72a0..efce67e 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskDetail.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/entity/TaskDetail.java @@ -115,6 +115,7 @@ public class TaskDetail implements Serializable { @Excel(name = "入库的库存详情id", width = 15) @ApiModelProperty(value = "入库的库存详情id") private Integer toInventoryDetailId; + @Excel(name = "唯一号", width = 15) @ApiModelProperty(value = "唯一号") private String uniqueCode; /** 备用字段1 */