lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java
@@ -82,6 +82,57 @@ return Result.OK(pageList); } /** * 根据分类选择工具 * * @param baseTools * @param pageNo * @param pageSize * @param req * @return */ @ApiOperation(value="根据分类选择工具", notes="根据分类选择工具") @GetMapping(value = "/queryToolByClassifyId") public Result<?> queryToolByClassifyId(BaseTools baseTools, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, HttpServletRequest req) { Map<String, String[]> parameterMap = req.getParameterMap(); String[] classifyIds = parameterMap.get("classifyId"); if (classifyIds != null && classifyIds.length > 0) { if("1".equals(classifyIds[0])){ Page<ParaCommonToolVo> page = new Page<ParaCommonToolVo>(pageNo, pageSize); IPage<ParaCommonToolVo> pageList = baseToolsService.paraCommonToolList(page, parameterMap); return Result.OK(pageList); }else if("2".equals(classifyIds[0])){ Page<ParaHolesToolsVo> page = new Page<ParaHolesToolsVo>(pageNo, pageSize); IPage<ParaHolesToolsVo> pageList = baseToolsService.paraHolesToolsList(page, parameterMap); return Result.OK(pageList); }else if("3".equals(classifyIds[0])){ Page<ParaThreadingToolVo> page = new Page<ParaThreadingToolVo>(pageNo, pageSize); IPage<ParaThreadingToolVo> pageList = baseToolsService.paraThreadingToolList(page, parameterMap); return Result.OK(pageList); }else if("4".equals(classifyIds[0])){ Page<ParaMillToolVo> page = new Page<ParaMillToolVo>(pageNo, pageSize); IPage<ParaMillToolVo> pageList = baseToolsService.paraMillToolList(page, parameterMap); return Result.OK(pageList); }else if("5".equals(classifyIds[0])){ Page<ParaTurningToolsVo> page = new Page<ParaTurningToolsVo>(pageNo, pageSize); IPage<ParaTurningToolsVo> pageList = baseToolsService.paraTurningToolsList(page, parameterMap); return Result.OK(pageList); }else if("6".equals(classifyIds[0])){ Page<ParaBladeVo> page = new Page<ParaBladeVo>(pageNo, pageSize); IPage<ParaBladeVo> pageList = baseToolsService.paraBladeList(page, parameterMap); return Result.OK(pageList); }else { return Result.error("请选择工具分类"); } }else { return Result.error("请选择工具分类"); } } /** * 分页列表查询 * lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/InboundOrderController.java
@@ -1,5 +1,6 @@ package org.jeecg.modules.tms.controller; import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -12,8 +13,10 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.tms.entity.InboundDetail; @@ -101,6 +104,8 @@ InboundOrder inboundOrder = jSONObject.toJavaObject(InboundOrder.class); inboundOrder.setOrderStatus("1"); inboundOrder.setInStatus("1"); LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); inboundOrder.setHandler(user.getUsername()); inboundOrder.setInboundNum(businessCodeRuleService.generateBusinessCodeSeq("InBoundOrder")); inboundOrderService.save(inboundOrder); // 保存入库申请单明细数据 @@ -108,7 +113,11 @@ List<InboundDetail> list = jsonArray.toJavaList(InboundDetail.class); for (int i = 0; i < list.size(); i++) { InboundDetail temp = list.get(i); temp.setId(null); temp.setInStorehouseId(inboundOrder.getId()); temp.setInActualCount(BigDecimal.ZERO); temp.setInStatus("1"); temp.setToolId(temp.getOnlyCode()); temp.setToolCode(temp.getToolCodeId()); } inboundDetailService.saveBatch(list); @@ -135,7 +144,11 @@ List<InboundDetail> list = jsonArray.toJavaList(InboundDetail.class); for (int i = 0; i < list.size(); i++) { InboundDetail temp = list.get(i); temp.setId(null); temp.setInStorehouseId(inboundOrder.getId()); temp.setInStatus("1"); temp.setInActualCount(BigDecimal.ZERO); temp.setToolId(temp.getOnlyCode()); temp.setToolCode(temp.getToolCodeId()); } inboundDetailService.saveOrUpdateBatch(list); @@ -236,11 +249,20 @@ } @AutoLog(value = "新增入库") @ApiOperation(value = "新增入库操作", notes = "新增入库操作") @AutoLog(value = "工具入库-新增入库") @ApiOperation(value = "工具入库-新增入库", notes = "工具入库-新增入库") @PostMapping("/addInStorage") public Result<?> addInStorage(@RequestBody JSONObject jSONObject) { inboundOrderService.addInStorage(jSONObject); return Result.OK("操作成功"); } @AutoLog(value = "工具入库-申请单入库") @ApiOperation(value = "工具入库-申请单入库", notes = "工具入库-申请单入库") @PostMapping("/addApplyInStorage") public Result<?> addApplyInStorage(@RequestBody JSONObject jSONObject) { inboundOrderService.addApplyInStorage(jSONObject); return Result.OK("操作成功"); } } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolLedgerDetailController.java
@@ -175,4 +175,42 @@ return super.importExcel(request, response, ToolLedgerDetail.class); } /** * 工具入库-选择借出工具 * * @param toolLedgerDetail * @param pageNo * @param pageSize * @param query * @return */ @ApiOperation(value="工具入库-选择借出工具", notes="工具入库-选择借出工具") @GetMapping(value = "/queryLendTool") public Result<?> queryLendTool(ToolLedgerDetail toolLedgerDetail, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam Map<String, String> query) { IPage<Map<String, Object>> pageList = toolLedgerDetailService.queryLendTool(pageNo, pageSize, query); return Result.OK(pageList); } /** * 工具入库-选择刃磨工具 * * @param toolLedgerDetail * @param pageNo * @param pageSize * @param query * @return */ @ApiOperation(value="工具入库-选择刃磨工具", notes="工具入库-选择刃磨工具") @GetMapping(value = "/querySharpenTool") public Result<?> querySharpenTool(ToolLedgerDetail toolLedgerDetail, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam Map<String, String> query) { IPage<Map<String, Object>> pageList = toolLedgerDetailService.querySharpenTool(pageNo, pageSize, query); return Result.OK(pageList); } } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/InboundDetail.java
@@ -58,6 +58,10 @@ @Excel(name = "实际入库数量", width = 15) @ApiModelProperty(value = "实际入库数量") private BigDecimal inActualCount; /**入库状态*/ @Excel(name = "入库状态", width = 15) @ApiModelProperty(value = "入库状态") private String inStatus; /**备注*/ @Excel(name = "备注", width = 15) @ApiModelProperty(value = "备注") @@ -94,4 +98,7 @@ @TableField(exist = false) private String toolCodeId; @TableField(exist = false) private String onlyCode; } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolLedgerDetail.java
@@ -90,4 +90,8 @@ @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "更新时间") private Date updateTime; @TableField(exist = false) @ApiModelProperty(value = "型号/图号") private String toolModel; } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/InboundDetailVo.java
@@ -40,4 +40,10 @@ @ApiModelProperty(value = "入库数量") private BigDecimal inStorageQuantity; @ApiModelProperty(value = "唯一编码") private String onlyCode; @ApiModelProperty(value = "工具分类id") private String classifyId; } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java
@@ -32,6 +32,9 @@ @ApiModelProperty(value = "工具编号") private String toolId; @ApiModelProperty(value = "工具id") private String toolCodeId; @ApiModelProperty(value = "序号(或企业内码)") private String signCode; lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolLedgerDetailMapper.java
@@ -1,7 +1,9 @@ package org.jeecg.modules.tms.mapper; import java.util.List; import java.util.Map; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; @@ -20,4 +22,8 @@ IPage<ToolLedgerDetail> queryPageList(Page<ToolLedgerDetail> page, @Param(Constants.WRAPPER) QueryWrapper<Object> queryWrapper); IPage<Map<String, Object>> queryLendTool(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper); IPage<Map<String, Object>> querySharpenTool(IPage<Map> pageData, @Param(Constants.WRAPPER) Wrapper<Map> wrapper); } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml
@@ -71,6 +71,7 @@ <select id="paraCommonToolList" resultType="org.jeecg.modules.tms.entity.vo.ParaCommonToolVo"> select t.id, t.id toolCodeId, t.classify_id classifyId, t.tool_code toolCode, t.sign_code signCode, lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InStoreDetailMapper.xml
@@ -2,7 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.tms.mapper.InStoreDetailMapper"> <select id="queryPageList" resultType="map" parameterType="String"> <select id="findPageList" resultType="map" parameterType="String"> SELECT t.id, t.tool_id onlyCode, @@ -26,8 +26,9 @@ t4.item_text operateType, t5.realname handler, t6.realname reviewer, t7.item_value inStatus, t8.item_value orderStatus t7.item_text inStatus, t8.item_text orderStatus, t9.item_text inStorehouseTypeName FROM tms_in_store_detail t LEFT JOIN tms_base_tools t1 on t.tool_code = t1.id LEFT JOIN tms_tools_classify t2 on t2.id = t1.classify_id @@ -37,6 +38,7 @@ LEFT JOIN sys_user t6 on t6.username = t3.reviewer LEFT JOIN (select * from v_sys_dict where dict_code='in_status') t7 on t7.item_value = t3.in_status LEFT JOIN (select * from v_sys_dict where dict_code='in_bill_status') t8 on t8.item_value = t3.order_status left join (select * from v_sys_dict where dict_code='in_storehouse_type') t9 on t9.item_value = t.in_storehouse_type ${ew.customSqlSegment} </select> </mapper> lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/InboundDetailMapper.xml
@@ -12,9 +12,11 @@ t1.in_storage_quantity inStorageQuantity, t1.in_actual_count inActualCount, t3.tool_code toolCode, t1.tool_id onlyCode, t3.chinese_name chineseName, t3.tool_model toolModel, t5.item_text applicationType, t6.id classifyId, t6.classify_id classifyNum, t8.item_text inStorehouseType from tms_inbound_detail t1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolLedgerDetailMapper.xml
@@ -19,4 +19,156 @@ LEFT JOIN tms_warehouse q on t.warehouse_id = q.id ${ew.customSqlSegment} </select> <!--<select id="queryToolByStatus" resultType="map" parameterType="String"> SELECT t.id, t.tool_code toolCodeId, p.tool_code toolCode, t.tool_id onlyCode, p.chinese_name chineseName, p.accuracy_class accuracyClass, p.tool_model toolModel, t.quantity, t.warehouse_id warehouseId, ISNULL(q.warehouse_id, '') + '/' + ISNULL(q.warehouse_name, '') warehouseName, t.position_code positionCode, t2.item_text applicationTypeName FROM tms_tool_ledger_detail t LEFT JOIN tms_base_tools p on t.tool_code = p.id LEFT JOIN tms_warehouse q on t.warehouse_id = q.id left join tms_tools_config_property t1 on t1.tool_code = p.id left join (select * from v_sys_dict where dict_code = 'application_type') t2 on t2.item_value = t1.application_type ${ew.customSqlSegment} </select>--> <select id="queryLendTool" resultType="map" parameterType="String"> SELECT temp.id, temp.toolCodeId, temp.toolCode, temp.onlyCode, temp.chineseName, temp.accuracyClass, temp.toolModel, temp.quantity, temp.warehouseId, temp.warehouseName, temp.positionCode, temp.applicationTypeName FROM ( SELECT t.id, t.tool_code toolCodeId, p.tool_code toolCode, t.tool_id onlyCode, p.chinese_name chineseName, p.accuracy_class accuracyClass, p.tool_model toolModel, 1 quantity, t.warehouse_id warehouseId, ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName, t.position_code positionCode, t2.item_text applicationTypeName FROM tms_tool_ledger_detail t LEFT JOIN tms_base_tools p ON t.tool_code = p.id LEFT JOIN tms_warehouse q ON t.warehouse_id = q.id LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type ${ew.customSqlSegment} UNION ALL ( SELECT t.id, t.tool_code toolCodeId, p.tool_code toolCode, t.tool_id onlyCode, p.chinese_name chineseName, p.accuracy_class accuracyClass, p.tool_model toolModel, t3.lend_count quantity, t.warehouse_id warehouseId, ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName, t.position_code positionCode, t2.item_text applicationTypeName FROM tms_tool_ledger_detail t LEFT JOIN tms_tool_ledger t3 ON t3.tool_id = t.tool_code LEFT JOIN tms_base_tools p ON t.tool_code = p.id LEFT JOIN tms_warehouse q ON t.warehouse_id = q.id LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type WHERE p.accuracy_class != 1 AND t3.lend_count != 0 ) ) temp </select> <select id="querySharpenTool" resultType="map" parameterType="String"> SELECT temp.id, temp.toolCodeId, temp.toolCode, temp.onlyCode, temp.chineseName, temp.accuracyClass, temp.toolModel, temp.quantity, temp.warehouseId, temp.warehouseName, temp.positionCode, temp.applicationTypeName FROM ( SELECT t.id, t.tool_code toolCodeId, p.tool_code toolCode, t.tool_id onlyCode, p.chinese_name chineseName, p.accuracy_class accuracyClass, p.tool_model toolModel, 1 quantity, t.warehouse_id warehouseId, ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName, t.position_code positionCode, t2.item_text applicationTypeName FROM tms_tool_ledger_detail t LEFT JOIN tms_base_tools p ON t.tool_code = p.id LEFT JOIN tms_warehouse q ON t.warehouse_id = q.id LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type ${ew.customSqlSegment} UNION ALL ( SELECT t.id, t.tool_code toolCodeId, p.tool_code toolCode, t.tool_id onlyCode, p.chinese_name chineseName, p.accuracy_class accuracyClass, p.tool_model toolModel, t3.sharpening_count quantity, t.warehouse_id warehouseId, ISNULL( q.warehouse_id, '' ) + '/' + ISNULL( q.warehouse_name, '' ) warehouseName, t.position_code positionCode, t2.item_text applicationTypeName FROM tms_tool_ledger_detail t LEFT JOIN tms_tool_ledger t3 ON t3.tool_id = t.tool_code LEFT JOIN tms_base_tools p ON t.tool_code = p.id LEFT JOIN tms_warehouse q ON t.warehouse_id = q.id LEFT JOIN tms_tools_config_property t1 ON t1.tool_code = p.id LEFT JOIN ( SELECT * FROM v_sys_dict WHERE dict_code = 'application_type' ) t2 ON t2.item_value = t1.application_type WHERE p.accuracy_class != 1 AND t3.sharpening_count != 0 ) ) temp </select> </mapper> lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IInboundOrderService.java
@@ -19,4 +19,6 @@ void approvalProcess(InboundOrderFlowDto inboundOrderFlowDto); void addInStorage(JSONObject jSONObject); void addApplyInStorage(JSONObject jSONObject); } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolLedgerDetailService.java
@@ -16,4 +16,8 @@ public interface IToolLedgerDetailService extends IService<ToolLedgerDetail> { IPage<ToolLedgerDetail> queryPageList(Page<ToolLedgerDetail> page, Map<String, String[]> parameterMap); IPage<Map<String, Object>> queryLendTool(Integer pageNo, Integer pageSize, Map<String, String> query); IPage<Map<String, Object>> querySharpenTool(Integer pageNo, Integer pageSize, Map<String, String> query); } lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InStoreDetailServiceImpl.java
@@ -40,9 +40,17 @@ if (StringUtils.isNotBlank(classifyId)) { queryWrapper.eq("t2.id", classifyId); } String toolCode = query.get("toolCode"); if (StringUtils.isNotBlank(toolCode)) { queryWrapper.like("t1.tool_code", toolCode); } String toolModel = query.get("toolModel"); if (StringUtils.isNotBlank(toolModel)) { queryWrapper.like("t1.tool_mode", toolModel); } // 排序写法 List<OrderItem> orderItems = new ArrayList<>(); orderItems.add(OrderItem.desc("t1.create_time")); orderItems.add(OrderItem.desc("t.create_time")); ((Page<Map>) pageData).setOrders(orderItems); } return super.getBaseMapper().findPageList(pageData,queryWrapper); lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.subject.Subject; import org.flowable.engine.TaskService; @@ -64,9 +65,43 @@ @Autowired private IToolLedgerDetailService toolLedgerDetailService; @Autowired private IInboundDetailService inboundDetailService; @Override public boolean submit(String id) { InboundOrder inboundOrder = this.getById(id); //借用和刃磨入库时校验库存 List<InboundDetail> inboundDetailList = inboundDetailService.lambdaQuery().eq(InboundDetail::getInStorehouseId,id).list(); if("2".equals(inboundOrder.getInStorehouseType())){ for(InboundDetail inboundDetail : inboundDetailList){ if(StringUtils.isNotBlank(inboundDetail.getToolId())){ ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolId,inboundDetail.getToolId()).one(); if(toolLedgerDetail.getQuantity().compareTo(inboundDetail.getInStorageQuantity()) == 0){ throw new JeecgBootException("编码为【" + toolLedgerDetail.getToolId() + "】的工具未借出,不需要归还入库!"); } }else { ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetail.getToolCode()).one(); if(toolLedger.getLendCount().compareTo(inboundDetail.getInStorageQuantity()) < 0){ throw new JeecgBootException("编码为【" + toolLedger.getToolId() + "】的工具未借出,不需要归还入库!"); } } } }else if("5".equals(inboundOrder.getInStorehouseType())){ for(InboundDetail inboundDetail : inboundDetailList){ if(StringUtils.isNotBlank(inboundDetail.getToolId())){ ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolId,inboundDetail.getToolId()).one(); if(toolLedgerDetail.getQuantity().compareTo(inboundDetail.getInStorageQuantity()) == 0){ throw new JeecgBootException("编码为【" + toolLedgerDetail.getToolId() + "】的工具未刃磨,不需要刃磨入库!"); } }else { ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetail.getToolCode()).one(); if(toolLedger.getSharpeningCount().compareTo(inboundDetail.getInStorageQuantity()) < 0){ throw new JeecgBootException("编码为【" + toolLedger.getToolId() + "】的工具未刃磨,不需要刃磨入库!"); } } } } //发起审批流程 this.triggerProcess(inboundOrder); //更新入库单审批状态为已提交 @@ -91,7 +126,7 @@ variables.put("comment", "新增入库申请单默认启动流程"); variables.put("proofreading", true); List<String> usernames = new ArrayList<>(); usernames.add(inboundOrder.getHandler()); usernames.add(inboundOrder.getReviewer()); variables.put("NextAssignee", usernames); Result result = flowDefinitionService.startProcessInstanceByKey("tool_in_storage", variables); return result.isSuccess(); @@ -165,9 +200,10 @@ //根据任务完成结果更新申请单状态 if (result.isSuccess()) { inboundOrder.setOrderStatus(inboundOrderFlowDto.getStatus()); if ("3".equals(inboundOrderFlowDto.getStatus())) { inboundOrder.setInStatus("1"); inboundOrder.setOrderStatus("3"); }else if("4".equals(inboundOrderFlowDto.getStatus())){ inboundOrder.setOrderStatus("1"); } inboundOrder.setReviewer(user.getUsername()); inboundOrder.setApprovalDate(new Date()); @@ -179,6 +215,7 @@ @Override public void addInStorage(JSONObject jSONObject) { String inStorehouseType = jSONObject.getString("inStorehouseType"); String classifyId = jSONObject.getString("classifyId"); Date inboundTime = jSONObject.getDate("inboundTime"); //获取入库明细 JSONArray jsonArray = jSONObject.getJSONArray("detailData"); @@ -201,6 +238,7 @@ newToolLedger.setLossCount(BigDecimal.ZERO); newToolLedger.setRepairCount(BigDecimal.ZERO); newToolLedger.setSharpeningCount(BigDecimal.ZERO); newToolLedger.setClassifyId(classifyId); toolLedgerService.save(newToolLedger); }else { toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); @@ -264,11 +302,319 @@ } } } //归还入库 }else if("2".equals(inStorehouseType)){ }else if("5".equals(inStorehouseType)){ //循环新增明细 for(InboundDetailVo inboundDetailVo : inStoreDetailList) { //查询是否管到把,管到把的查询当前编码 BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); //增加可用库存,减少借出库存 ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); toolLedger.setLendCount(toolLedger.getLendCount().subtract(inboundDetailVo.getInStorageQuantity())); toolLedgerService.updateById(toolLedger); //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId //管到把 if("1".equals(baseTools.getAccuracyClass())){ //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); toolLedgerDetail.setQuantity(BigDecimal.ONE); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(inboundTime); inStoreDetail.setOperateType("2"); inStoreDetail.setInNumber(BigDecimal.ONE); inStoreDetail.setInStorehouseType("2"); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); inStoreDetailService.save(inStoreDetail); //不管到把 }else { //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(inboundTime); inStoreDetail.setOperateType("2"); inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); inStoreDetail.setInStorehouseType("2"); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetailService.save(inStoreDetail); } } }else if("5".equals(inStorehouseType)){ //循环新增明细 for(InboundDetailVo inboundDetailVo : inStoreDetailList) { //查询是否管到把,管到把的查询当前编码 BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); //增加总库存及可用库存,减少刃磨库存 ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().subtract(inboundDetailVo.getInStorageQuantity())); toolLedgerService.updateById(toolLedger); //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId //管到把 if("1".equals(baseTools.getAccuracyClass())){ //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); toolLedgerDetail.setQuantity(BigDecimal.ONE); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(inboundTime); inStoreDetail.setOperateType("2"); inStoreDetail.setInNumber(BigDecimal.ONE); inStoreDetail.setInStorehouseType("5"); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); inStoreDetailService.save(inStoreDetail); //不管到把 }else { //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(inboundTime); inStoreDetail.setOperateType("2"); inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); inStoreDetail.setInStorehouseType("5"); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetailService.save(inStoreDetail); } } } } @Override public void addApplyInStorage(JSONObject jSONObject) { String inStorehouseType = jSONObject.getString("inStorehouseType"); //入库申请单id String orderId = jSONObject.getString("orderId"); //获取入库明细 JSONArray jsonArray = jSONObject.getJSONArray("detailData"); List<InboundDetailVo> inStoreDetailList =jsonArray.toJavaList(InboundDetailVo.class); //新货入库 if("1".equals(inStorehouseType)){ //循环新增明细 for(InboundDetailVo inboundDetailVo : inStoreDetailList){ //查询是否管到把,管到把的查询当前编码 BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); //操作库存,查询总库存是否存在该类刀具 ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId,inboundDetailVo.getToolCodeId()).one(); if(toolLedger == null){ ToolLedger newToolLedger = new ToolLedger(); newToolLedger.setToolId(inboundDetailVo.getToolCodeId()); newToolLedger.setAvailableCount(inboundDetailVo.getInStorageQuantity()); newToolLedger.setTotalCount(inboundDetailVo.getInStorageQuantity()); newToolLedger.setLendCount(BigDecimal.ZERO); newToolLedger.setDetectionCount(BigDecimal.ZERO); newToolLedger.setLossCount(BigDecimal.ZERO); newToolLedger.setRepairCount(BigDecimal.ZERO); newToolLedger.setSharpeningCount(BigDecimal.ZERO); newToolLedger.setClassifyId(inboundDetailVo.getClassifyId()); toolLedgerService.save(newToolLedger); }else { toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); toolLedger.setTotalCount(toolLedger.getTotalCount().add(inboundDetailVo.getInStorageQuantity())); toolLedgerService.updateById(toolLedger); } //管到把 if("1".equals(baseTools.getAccuracyClass())){ //循环入库数量,为实物赋码 for(int i=0;i<inboundDetailVo.getInStorageQuantity().intValue();i++){ BaseTools newBaseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); //查询当前编码 String currentCode = newBaseTools.getCurrentCode(); //将字符串转换为整数 int num = Integer.parseInt(currentCode); //加1操作 num++; //转换回字符串并保留前导零 String result = String.format("%0" + currentCode.length() + "d", num); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInStorehouseId(orderId); inStoreDetail.setInboundTime(new Date()); inStoreDetail.setOperateType("1"); inStoreDetail.setInNumber(BigDecimal.ONE); inStoreDetail.setInStorehouseType("1"); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result); inStoreDetailService.save(inStoreDetail); //增加库存明细 ToolLedgerDetail toolLedgerDetail = new ToolLedgerDetail(); toolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId()); toolLedgerDetail.setToolId(inboundDetailVo.getToolCode()+"-"+result); toolLedgerDetail.setQuantity(BigDecimal.ONE); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.save(toolLedgerDetail); //更新当前编码 newBaseTools.setCurrentCode(result); baseToolsService.updateById(newBaseTools); } //不管到把 }else { //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(new Date()); inStoreDetail.setOperateType("1"); inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); inStoreDetail.setInStorehouseType("1"); inStoreDetail.setInStorehouseId(orderId); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetailService.save(inStoreDetail); //查询库存明细中是否存在该工具 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); if(toolLedgerDetail == null){ ToolLedgerDetail newToolLedgerDetail = new ToolLedgerDetail(); newToolLedgerDetail.setToolCode(inboundDetailVo.getToolCodeId()); newToolLedgerDetail.setQuantity(inboundDetailVo.getInStorageQuantity()); newToolLedgerDetail.setStatus("1"); toolLedgerDetailService.save(newToolLedgerDetail); }else { toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); toolLedgerDetailService.updateById(toolLedgerDetail); } } //更改明细入库状态及实际入库数量 InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId()); inboundDetail.setInStatus("3"); inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity()); inboundDetailService.updateById(inboundDetail); } //归还入库 }else if("2".equals(inStorehouseType)){ //循环新增明细 for(InboundDetailVo inboundDetailVo : inStoreDetailList) { //查询是否管到把,管到把的查询当前编码 BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); //增加可用库存,减少借出库存 ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); toolLedger.setLendCount(toolLedger.getLendCount().subtract(inboundDetailVo.getInStorageQuantity())); toolLedgerService.updateById(toolLedger); //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId //管到把 if("1".equals(baseTools.getAccuracyClass())){ //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); toolLedgerDetail.setQuantity(BigDecimal.ONE); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(new Date()); inStoreDetail.setOperateType("1"); inStoreDetail.setInNumber(BigDecimal.ONE); inStoreDetail.setInStorehouseType("2"); inStoreDetail.setInStorehouseId(orderId); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); inStoreDetailService.save(inStoreDetail); //不管到把 }else { //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(new Date()); inStoreDetail.setOperateType("1"); inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); inStoreDetail.setInStorehouseType("2"); inStoreDetail.setInStorehouseId(orderId); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetailService.save(inStoreDetail); } //更改明细入库状态及实际入库数量 InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId()); inboundDetail.setInStatus("3"); inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity()); inboundDetailService.updateById(inboundDetail); } }else if("5".equals(inStorehouseType)){ //循环新增明细 for(InboundDetailVo inboundDetailVo : inStoreDetailList) { //查询是否管到把,管到把的查询当前编码 BaseTools baseTools = baseToolsService.getById(inboundDetailVo.getToolCodeId()); //增加总库存及可用库存,减少刃磨库存 ToolLedger toolLedger = toolLedgerService.lambdaQuery().eq(ToolLedger::getToolId, inboundDetailVo.getToolCodeId()).one(); toolLedger.setAvailableCount(toolLedger.getAvailableCount().add(inboundDetailVo.getInStorageQuantity())); toolLedger.setSharpeningCount(toolLedger.getSharpeningCount().subtract(inboundDetailVo.getInStorageQuantity())); toolLedgerService.updateById(toolLedger); //查询是否管到把,管到把的用toolId,不管到把的用toolCodeId //管到把 if("1".equals(baseTools.getAccuracyClass())){ //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery() .eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()) .eq(ToolLedgerDetail::getToolId,inboundDetailVo.getOnlyCode()).one(); toolLedgerDetail.setQuantity(BigDecimal.ONE); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(new Date()); inStoreDetail.setOperateType("1"); inStoreDetail.setInNumber(BigDecimal.ONE); inStoreDetail.setInStorehouseType("5"); inStoreDetail.setInStorehouseId(orderId); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetail.setToolId(inboundDetailVo.getOnlyCode()); inStoreDetailService.save(inStoreDetail); //不管到把 }else { //增加库存明细可用库存,修改状态 ToolLedgerDetail toolLedgerDetail = toolLedgerDetailService.lambdaQuery().eq(ToolLedgerDetail::getToolCode,inboundDetailVo.getToolCodeId()).one(); toolLedgerDetail.setQuantity(toolLedgerDetail.getQuantity().add(inboundDetailVo.getInStorageQuantity())); toolLedgerDetail.setStatus("1"); toolLedgerDetailService.updateById(toolLedgerDetail); //保存入库流水 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(new Date()); inStoreDetail.setOperateType("1"); inStoreDetail.setInNumber(inboundDetailVo.getInStorageQuantity()); inStoreDetail.setInStorehouseType("5"); inStoreDetail.setInStorehouseId(orderId); inStoreDetail.setToolCode(inboundDetailVo.getToolCodeId()); inStoreDetailService.save(inStoreDetail); } //更改明细入库状态及实际入库数量 InboundDetail inboundDetail = inboundDetailService.getById(inboundDetailVo.getId()); inboundDetail.setInStatus("3"); inboundDetail.setInActualCount(inboundDetailVo.getInStorageQuantity()); inboundDetailService.updateById(inboundDetail); } } //更改申请单入库状态 InboundOrder inboundOrder = this.getById(orderId); List<InboundDetail> inboundDetailList = inboundDetailService.lambdaQuery().eq(InboundDetail::getInStorehouseId,orderId).list(); boolean flag = inboundDetailList.stream().allMatch(inboundDetail -> "3".equals(inboundDetail.getInStatus())); if(flag){ inboundOrder.setInStatus("3"); }else { inboundOrder.setInStatus("2"); } this.updateById(inboundOrder); } private LoginUser getCurrentUser() { lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolLedgerDetailServiceImpl.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.commons.lang.StringUtils; import org.jeecg.common.exception.ExceptionCast; import org.jeecg.modules.tms.entity.ToolLedgerDetail; import org.jeecg.modules.tms.mapper.ToolLedgerDetailMapper; import org.jeecg.modules.tms.service.IToolLedgerDetailService; @@ -46,4 +48,54 @@ } return this.baseMapper.queryPageList(page, queryWrapper); } @Override public IPage<Map<String, Object>> queryLendTool(Integer pageNo, Integer pageSize, Map<String, String> query) { if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) { ExceptionCast.cast("参数错误"); } IPage<Map> pageData = new Page<Map>(pageNo, pageSize); QueryWrapper<Map> queryWrapper = Wrappers.query(); if (null != query) { String toolCode = query.get("toolCode"); if (StringUtils.isNotBlank(toolCode)) { queryWrapper.like("p.tool_code", toolCode); } String status = query.get("status"); if (StringUtils.isNotBlank(status)) { queryWrapper.eq("t.status", status); } String classifyId = query.get("classifyId"); if (StringUtils.isNotBlank(classifyId)) { queryWrapper.like("p.classify_id", classifyId); } } return this.baseMapper.queryLendTool(pageData,queryWrapper); } @Override public IPage<Map<String, Object>> querySharpenTool(Integer pageNo, Integer pageSize, Map<String, String> query) { if (pageNo == null || pageNo < 1 || pageSize == null || pageSize < 1) { ExceptionCast.cast("参数错误"); } IPage<Map> pageData = new Page<Map>(pageNo, pageSize); QueryWrapper<Map> queryWrapper = Wrappers.query(); if (null != query) { String toolCode = query.get("toolCode"); if (StringUtils.isNotBlank(toolCode)) { queryWrapper.like("p.tool_code", toolCode); } String status = query.get("status"); if (StringUtils.isNotBlank(status)) { queryWrapper.eq("t.status", status); } String classifyId = query.get("classifyId"); if (StringUtils.isNotBlank(classifyId)) { queryWrapper.like("p.classify_id", classifyId); } } return this.baseMapper.querySharpenTool(pageData,queryWrapper); } }