add:海柔半成品入库、海柔半成品库存、海柔半成品库存变动
This commit is contained in:
@@ -40,6 +40,7 @@ public enum AcsTaskEnum {
|
||||
TASK_STRUCT_BCP_EMPOUT("17","半成品-空托盘出库"),
|
||||
TASK_STRUCT_CP_IN("11","入库-成品-生产入库"),
|
||||
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
|
||||
TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"),
|
||||
TASK_STRUCT_CP_CHECK("13","-盘点"),
|
||||
TASK_WASH_LACK("20","清洗机-缺料请求"),
|
||||
TASK_WASH_EMP("21","清洗机-空框请求"),
|
||||
|
||||
@@ -62,8 +62,10 @@ public class DivRuleCpServiceImpl implements DivRuleCpService {
|
||||
.eq(StIvtStructattr::getSect_id, sect_id)
|
||||
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_USED.code("是"))
|
||||
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(StIvtStructattr::getStoragevehicle_code, "")
|
||||
.eq(StIvtStructattr::getIs_emptyvehicle, false)
|
||||
.and(qr -> qr.eq(StIvtStructattr::getStoragevehicle_code,"")
|
||||
.or().isNull(StIvtStructattr::getStoragevehicle_code)
|
||||
)
|
||||
.ne(StIvtStructattr::getIs_emptyvehicle, true)
|
||||
.orderByAsc(StIvtStructattr::getStruct_code)
|
||||
, false);
|
||||
break;
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.nl.wms.storage_manage.semimanage.service.check.IStIvtCheckmstBcpServi
|
||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService;
|
||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService;
|
||||
import org.nl.wms.storage_manage.semimanage.service.shutFrame.IStIvtShutframeinvBcpService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
@@ -66,6 +67,10 @@ public enum TASKEnum implements FunctionStrategy<String, JSONObject> {
|
||||
ISchBasePointService bean = SpringContextHolder.getBean(ISchBasePointService.class);
|
||||
bean.taskOperate(form);
|
||||
}),
|
||||
HR_CP_IN_TASK(type -> AcsTaskEnum.TASK_STRUCT_HR_IN.getCode().equals(type), form -> {
|
||||
IStIvtIostorinvHrBcpInService bean = SpringContextHolder.getBean(IStIvtIostorinvHrBcpInService.class);
|
||||
bean.taskOperate(form);
|
||||
}),
|
||||
|
||||
;
|
||||
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.controller.iostorInv;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "海柔半成品入库")
|
||||
@RequestMapping("/api/in/semiproductHr")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class StIvtIostorinvHrBcpInController {
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvHrBcpInService stIvtIostorinvBcpService; // 海柔半成品入库服务
|
||||
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
|
||||
|
||||
@GetMapping
|
||||
@Log("查询入库单据")
|
||||
//("查询入库单据")
|
||||
public ResponseEntity<Object> query(HrBcpIostorInvQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(stIvtIostorinvBcpService.queryDtl(query,page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/create")
|
||||
@Log("新增入库单")
|
||||
//("新增入库单")
|
||||
public ResponseEntity<Object> create(@RequestBody JSONObject form) {
|
||||
stIvtIostorinvBcpService.create(form);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@Log("删除出入库单")
|
||||
//("删除出入库单")
|
||||
@PostMapping("/delete")
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
|
||||
if (ids.length>0){
|
||||
stIvtIostorinvBcpService.update(new UpdateWrapper<StIvtIostorinvHrBcp>()
|
||||
.set("is_delete","1")
|
||||
.in("iostorinv_id",ids));
|
||||
|
||||
List<StIvtIostorinvHrBcp> bcps = stIvtIostorinvBcpService.listByIds(Arrays.asList(ids));
|
||||
List<String> collect = bcps.stream().map(StIvtIostorinvHrBcp::getStoragevehicle_code).collect(Collectors.toList());
|
||||
// 更新载具扩展属性 - 释放载具对应物料关系 清空数量
|
||||
if (!CollectionUtils.isEmpty(collect)){
|
||||
iMdPbStoragevehicleextService.update(
|
||||
new MdPbStoragevehicleext()
|
||||
.setMaterial_id("")
|
||||
.setStorage_qty(BigDecimal.valueOf(0)),
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.in(MdPbStoragevehicleext::getStoragevehicle_code,collect)
|
||||
);
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/update")
|
||||
@Log("修改入库单")
|
||||
//("修改入库单")
|
||||
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson) {
|
||||
stIvtIostorinvBcpService.updateBill(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getIODtl")
|
||||
@Log("查询入库分配明细")
|
||||
//("查询入库分配明细")
|
||||
public ResponseEntity<Object> getIODtl(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(stIvtIostorinvBcpService.getIoDtl(whereJson.toJavaObject(HrBcpIostorInvQuery.class)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("完成单据")
|
||||
//("完成单据")
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
stIvtIostorinvBcpService.confirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/confirmTask")
|
||||
@Log("下发任务")
|
||||
//("下发任务")
|
||||
public ResponseEntity<Object> confirmTask(@RequestBody JSONObject whereJson) {
|
||||
stIvtIostorinvBcpService.confirmTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.controller.iostorInv;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@RestController
|
||||
@Api(tags = "海柔半成品出库")
|
||||
@RequestMapping("/api/out/semiproductHr")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class StIvtIostorinvHrBcpOutController {
|
||||
|
||||
@Autowired
|
||||
private IStIvtIostorinvHrBcpOutService bcpOutService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询入库单据")
|
||||
//("查询入库单据")
|
||||
public ResponseEntity<Object> query(HrBcpIostorInvQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(bcpOutService.queryDtl(query,page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/create")
|
||||
@Log("新增出库单")
|
||||
//("新增出库单")
|
||||
public ResponseEntity<Object> create(@RequestBody JSONObject form) {
|
||||
bcpOutService.create(form);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@Log("删除出入库单")
|
||||
//("删除出入库单")
|
||||
@PostMapping("/delete")
|
||||
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
|
||||
bcpOutService.delete(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/update")
|
||||
@Log("修改出库单")
|
||||
//("修改出库单")
|
||||
public ResponseEntity<Object> update(@RequestBody JSONObject whereJson) {
|
||||
bcpOutService.updateBill(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/commit")
|
||||
@Log("出入单提交")
|
||||
//("出入单提交")
|
||||
public ResponseEntity<Object> commit(@RequestBody Map<String,Object> whereJson) {
|
||||
//semiProductInService.commit(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/getIODtl")
|
||||
@Log("查询入库分配明细")
|
||||
//("查询入库分配明细")
|
||||
public ResponseEntity<Object> getIODtl(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(bcpOutService.getIoDtl(whereJson.toJavaObject(HrBcpIostorInvQuery.class)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/confirm")
|
||||
@Log("完成单据")
|
||||
//("完成单据")
|
||||
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson) {
|
||||
bcpOutService.confirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/confirmTask")
|
||||
@Log("下发任务")
|
||||
//("下发任务")
|
||||
public ResponseEntity<Object> confirmTask(@RequestBody JSONObject whereJson) {
|
||||
bcpOutService.confirmTask(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.controller.structLvt;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dto.StIvtStructivtBcpVo;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery;
|
||||
import org.nl.wms.system_manage.service.tableData.ColumnInfoService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/bcp/hr")
|
||||
public class StIvtStructivtHrBcpController {
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructivtHrBcpService bcpService;
|
||||
@Autowired
|
||||
private ColumnInfoService columnInfoService;
|
||||
|
||||
@GetMapping
|
||||
@Log("半成品库存查询")
|
||||
//("半成品库存查询")
|
||||
public ResponseEntity<Object> query(StructIvtHrBcpQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(bcpService.packageQuery(query,page), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/bypda")
|
||||
@Log("半成品库存查询")
|
||||
//("半成品库存查询")
|
||||
public ResponseEntity<Object> bypdaQuery(@RequestBody PageQuery query) {
|
||||
query.setPage(0);
|
||||
return new ResponseEntity<>(bcpService.packageQuery(new StructIvtHrBcpQuery(),query), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/getBcpIvt")
|
||||
@Log("查询可用的半成品库存")
|
||||
//("查询可用的半成品库存")
|
||||
public ResponseEntity<Object> getBcpIvt(StructIvtHrBcpQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(bcpService.getBcpIvt(query, page), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getBcpIvtInfo")
|
||||
@Log("查询可用的半成品库存")
|
||||
//("查询可用的半成品库存")
|
||||
public ResponseEntity<Object> getBcpIvtInfo(@RequestBody JSONObject jo) {
|
||||
return new ResponseEntity<>(bcpService.getBcpIvtInfo(jo), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/download")
|
||||
@Log("半成品库存导出")
|
||||
//("半成品库存查询")
|
||||
public ResponseEntity<Object> download(StructIvtHrBcpQuery query, PageQuery page, HttpServletResponse response) {
|
||||
List<Map> maps = bcpService.queryAll(query);
|
||||
String s = JSON.toJSONString(maps);
|
||||
List<StIvtStructivtBcpVo> bcpVos = JSONArray.parseArray(s, StIvtStructivtBcpVo.class);
|
||||
columnInfoService.exportFile(bcpVos,response, MapOf.of("stor_name","仓库名称","material_name","物料名称","material_spec","物料规格"));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.controller.structLvt;
|
||||
|
||||
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存变动记录表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/stIvtStructivtflowHrBcp")
|
||||
public class StIvtStructivtflowHrBcpController {
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructivtflowHrService iStIvtStructivtflowService;
|
||||
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<Object> query(IvtFlowQuery query, PageQuery page) {
|
||||
return new ResponseEntity<>(iStIvtStructivtflowService.queryAll(query,page), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-08-01
|
||||
*/
|
||||
public interface IStIvtIostorinvHrBcpInService extends IService<StIvtIostorinvHrBcp> {
|
||||
|
||||
|
||||
Object queryDtl(HrBcpIostorInvQuery query, PageQuery page);
|
||||
|
||||
List<Map> getIoDtl(HrBcpIostorInvQuery query);
|
||||
/**
|
||||
* 新增
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
void create(JSONObject form);
|
||||
/**
|
||||
* 完成
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
String confirm(JSONObject form);
|
||||
|
||||
/**
|
||||
* 库存变动
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
void onlyConfirm(JSONObject form);
|
||||
/**
|
||||
* 下发单据
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
String confirmTask(JSONObject form);
|
||||
/**
|
||||
* 修改单据
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
String updateBill(JSONObject form);
|
||||
|
||||
void taskOperate(JSONObject form);
|
||||
|
||||
List<Map> getPdaAll(JSONObject form);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-08-01
|
||||
*/
|
||||
public interface IStIvtIostorinvHrBcpOutService extends IService<StIvtIostorinvHrBcp> {
|
||||
|
||||
|
||||
Object queryDtl(HrBcpIostorInvQuery query, PageQuery page);
|
||||
|
||||
List<Map> getIoDtl(HrBcpIostorInvQuery query);
|
||||
/**
|
||||
* 新增
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
void create(JSONObject form);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
void delete(Long[] ids);
|
||||
|
||||
/**
|
||||
* 完成
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
String confirm(JSONObject form);
|
||||
|
||||
/**
|
||||
* 出库确认
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
void onlyConfirm(JSONObject form);
|
||||
|
||||
/**
|
||||
* 自动出库
|
||||
* @param param
|
||||
* param.put("stor_id", form.getString("stor_id"));
|
||||
* param.put("sect_id", form.getString("sect_id"));
|
||||
* param.put("material_id", form.getString("material_id"));
|
||||
* @return
|
||||
*/
|
||||
StIvtStructivtBcp autoConfirmout(JSONObject param);
|
||||
|
||||
StIvtStructattr autoConfirmin(JSONObject param);
|
||||
|
||||
void lockStruct(String struct,String type,String inv_code);
|
||||
/**
|
||||
* 下发单据
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
String confirmTask(JSONObject form);
|
||||
/**
|
||||
* 修改单据
|
||||
* @param form
|
||||
* @return
|
||||
*/
|
||||
String updateBill(JSONObject form);
|
||||
|
||||
void taskOperate(JSONObject form);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,232 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-08-01
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("st_ivt_iostorinv_hr_bcp")
|
||||
public class StIvtIostorinvHrBcp implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 出入单标识
|
||||
*/
|
||||
@TableId(value = "iostorinv_id")
|
||||
private String iostorinv_id;
|
||||
|
||||
/**
|
||||
* 单据编号
|
||||
*/
|
||||
private String bill_code;
|
||||
|
||||
/**
|
||||
* 出入类型
|
||||
*/
|
||||
private String io_type;
|
||||
|
||||
/**
|
||||
* 业务类型
|
||||
*/
|
||||
private String buss_type;
|
||||
|
||||
/**
|
||||
* 单据类型
|
||||
*/
|
||||
private String bill_type;
|
||||
/**
|
||||
* 单据zhuangtai
|
||||
*/
|
||||
private String bill_status;
|
||||
|
||||
/**
|
||||
* 业务日期
|
||||
*/
|
||||
private String biz_date;
|
||||
|
||||
/**
|
||||
* 关联单据
|
||||
*/
|
||||
private String base_bill_code;
|
||||
|
||||
/**
|
||||
* 车间标识
|
||||
*/
|
||||
private String workshop_id;
|
||||
|
||||
/**
|
||||
* 仓库标识
|
||||
*/
|
||||
private String stor_id;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
*/
|
||||
private String stor_code;
|
||||
|
||||
/**
|
||||
* 仓库名称
|
||||
*/
|
||||
private String stor_name;
|
||||
|
||||
/**
|
||||
* 库区标识
|
||||
*/
|
||||
private String sect_id;
|
||||
|
||||
/**
|
||||
* 库区编码
|
||||
*/
|
||||
private String sect_code;
|
||||
|
||||
/**
|
||||
* 库区名称
|
||||
*/
|
||||
private String sect_name;
|
||||
|
||||
/**
|
||||
* 仓位标识
|
||||
*/
|
||||
private String struct_id;
|
||||
|
||||
/**
|
||||
* 仓位编码
|
||||
*/
|
||||
private String struct_code;
|
||||
|
||||
/**
|
||||
* 仓位名称
|
||||
*/
|
||||
private String struct_name;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
*/
|
||||
private String material_id;
|
||||
|
||||
/**
|
||||
* 批次
|
||||
*/
|
||||
private String pcsn;
|
||||
|
||||
/**
|
||||
* 品质类型
|
||||
*/
|
||||
private String quality_scode;
|
||||
|
||||
/**
|
||||
* 库存等级
|
||||
*/
|
||||
private String ivt_level;
|
||||
|
||||
/**
|
||||
* 是否可用
|
||||
*/
|
||||
private Boolean is_active;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal plan_qty;
|
||||
|
||||
/**
|
||||
* 数量计量单位标识
|
||||
*/
|
||||
private String qty_unit_id;
|
||||
|
||||
/**
|
||||
* 数量计量单位名称
|
||||
*/
|
||||
private String qty_unit_name;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
*/
|
||||
|
||||
private String create_name;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private String create_time;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private String update_id;
|
||||
|
||||
/**
|
||||
* 修改人姓名
|
||||
*/
|
||||
private String update_name;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private String update_time;
|
||||
|
||||
/**
|
||||
* 执行状态
|
||||
*/
|
||||
private String work_status;
|
||||
|
||||
/**
|
||||
* 任务标识
|
||||
*/
|
||||
private String task_id;
|
||||
|
||||
/**
|
||||
* 存储载具标识
|
||||
*/
|
||||
private String storagevehicle_id;
|
||||
|
||||
/**
|
||||
* 存储载具编码
|
||||
*/
|
||||
private String storagevehicle_code;
|
||||
|
||||
/**
|
||||
* 存储载具类型
|
||||
*/
|
||||
private String storagevehicle_type;
|
||||
|
||||
/**
|
||||
* 单重
|
||||
*/
|
||||
private BigDecimal unit_weight;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Boolean is_delete;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
/**
|
||||
* 入库点
|
||||
*/
|
||||
private String point_code;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.common.anno.Datazhuazhua;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Datazhuazhua
|
||||
public interface StIvtIostorinvHrBcpMapper extends BaseMapper<StIvtIostorinvHrBcp> {
|
||||
List<Map> getIostorinv(@Param("query") HrBcpIostorInvQuery query);
|
||||
|
||||
List<Map> getPdaAll(JSONObject form);
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper">
|
||||
<select id="getIostorinv" resultType="java.util.Map">
|
||||
SELECT
|
||||
dtl.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
task.task_code,
|
||||
task.task_status,
|
||||
ROUND(dtl.plan_qty / dtl.unit_weight,3 ) AS qty
|
||||
FROM
|
||||
st_ivt_iostorinv_hr_bcp dtl
|
||||
LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id
|
||||
LEFT JOIN sch_base_task task ON task.task_id = dtl.task_id
|
||||
<where>
|
||||
dtl.is_delete = false
|
||||
<if test="query.stor_id != null and query.stor_id != ''">
|
||||
and dtl.stor_id = #{query.stor_id}
|
||||
</if>
|
||||
<if test="query.iostorinv_id != null and query.iostorinv_id != ''">
|
||||
and dtl.iostorinv_id = #{query.iostorinv_id}
|
||||
</if>
|
||||
<if test="query.bill_code != null and query.bill_code != ''">
|
||||
and dtl.bill_code like #{query.bill_code}
|
||||
</if>
|
||||
<if test="query.bill_type != null and query.bill_type != ''">
|
||||
and dtl.bill_type like #{query.bill_type}
|
||||
</if>
|
||||
<if test="query.bill_status != null and query.bill_status != ''">
|
||||
and dtl.bill_status = #{query.bill_status}
|
||||
</if>
|
||||
<if test="query.io_type != null and query.io_type != ''">
|
||||
and dtl.io_type = #{query.io_type}
|
||||
</if>
|
||||
<if test="query.start_time != null and query.start_time != ''">
|
||||
and dtl.create_time >= #{query.start_time}
|
||||
</if>
|
||||
<if test="query.end_time != null and query.end_time != ''">
|
||||
and #{query.end_time} >= dtl.create_time
|
||||
</if>
|
||||
</where>
|
||||
order by dtl.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="getPdaAll" resultType="java.util.Map">
|
||||
SELECT
|
||||
dtl.*,
|
||||
mater.material_code,
|
||||
mater.material_spec,
|
||||
ROUND(dtl.plan_qty / dtl.unit_weight,3) AS qty
|
||||
FROM
|
||||
st_ivt_iostorinv_hr_bcp dtl
|
||||
LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id
|
||||
LEFT JOIN sch_base_task task ON task.task_id = dtl.task_id
|
||||
<where>
|
||||
dtl.is_delete = false
|
||||
AND dtl.bill_status != '99'
|
||||
<if test="io_type != null and io_type != ''">
|
||||
and dtl.io_type = #{io_type}
|
||||
</if>
|
||||
<if test="stor_id != null and stor_id != ''">
|
||||
and dtl.stor_id = #{stor_id}
|
||||
</if>
|
||||
|
||||
<if test="material_code != null and material_code != ''">
|
||||
and (mater.material_code LIKE '%${material_code}%' or
|
||||
mater.material_name LIKE '%${material_code}%')
|
||||
</if>
|
||||
<if test="storagevehicle_code != null and storagevehicle_code != ''">
|
||||
and dtl.storagevehicle_code LIKE '%${storagevehicle_code}%'
|
||||
</if>
|
||||
<if test="bill_type != null and bill_type != ''">
|
||||
and dtl.bill_type = #{bill_type}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
order by dtl.create_time desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.common.domain.query.QParam;
|
||||
import org.nl.common.enums.QueryTEnum;
|
||||
import org.nl.wms.storage_manage.semimanage.service.iostorInv.dao.StIvtIostorinvBcp;
|
||||
|
||||
/*
|
||||
* @author LXY
|
||||
* @Date 2023/08/01 19:49
|
||||
*/
|
||||
@Data
|
||||
public class HrBcpIostorInvQuery extends BaseQuery<StIvtIostorinvBcp> {
|
||||
|
||||
|
||||
private String stor_id;
|
||||
|
||||
private String iostorinv_id;
|
||||
|
||||
private String bill_status;
|
||||
|
||||
private String bill_type;
|
||||
|
||||
private String bill_code;
|
||||
|
||||
private String io_type;
|
||||
|
||||
private Boolean is_delete = false;
|
||||
|
||||
|
||||
@Override
|
||||
public void paramMapping() {
|
||||
super.doP.put("bill_code", QParam.builder().k(new String[]{"bill_code"}).type(QueryTEnum.LK).build());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,477 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.jsonwebtoken.lang.Assert;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.PointEvent;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.IVTEnum;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
|
||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Service
|
||||
public class StIvtIostorinvHrBcpInServiceImpl extends ServiceImpl<StIvtIostorinvHrBcpMapper, StIvtIostorinvHrBcp> implements IStIvtIostorinvHrBcpInService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtBsrealstorattrService storattrService; // 实物属性服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructivtHrBcpService structivtBcpService; // 仓库库存服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService; // 仓位服务
|
||||
|
||||
@Autowired
|
||||
private DivRuleCpService divRuleCpService; // 分配规则服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtSectattrService sectattrService; // 库区服务
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService; // 任务表服务
|
||||
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService materialbaseService; // 任务表服务
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructivtflowHrService iStIvtStructivtflowService; // 库存变动服务
|
||||
|
||||
@Autowired
|
||||
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息
|
||||
|
||||
@Autowired
|
||||
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
|
||||
|
||||
@Override
|
||||
public Object queryDtl(HrBcpIostorInvQuery query, PageQuery pageQuery) {
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
TableDataInfo build = TableDataInfo.build(this.getIoDtl(query));
|
||||
build.setTotalElements(page.getTotal());
|
||||
return build;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getIoDtl(HrBcpIostorInvQuery query) {
|
||||
return this.baseMapper.getIostorinv(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void create(JSONObject form) {
|
||||
Assert.notNull(form, "参数不能为空");
|
||||
for (Object item : form.getJSONArray("tableData")) {
|
||||
StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("入库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
}
|
||||
packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item)));
|
||||
mst.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
this.save(mst);
|
||||
|
||||
// 更新载具扩展属性
|
||||
iMdPbStoragevehicleextService.update(
|
||||
new UpdateWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.set(MdPbStoragevehicleext::getMaterial_id, mst.getMaterial_id())
|
||||
.set(MdPbStoragevehicleext::getWeight, mst.getPlan_qty())
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, mst.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
// 判断是否自动下发
|
||||
if (ObjectUtil.isNotEmpty(form.getString("auto_send"))) {
|
||||
confirmTask(JSONObject.parseObject(JSON.toJSONString(mst)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void packageRow(StIvtIostorinvHrBcp mst, JSONObject row) {
|
||||
mst.setMaterial_id(row.getString("material_id"));
|
||||
mst.setPcsn(StringUtils.isNotEmpty(row.getString("pcsn")) ? row.getString("pcsn") : DateUtil.today());
|
||||
mst.setPlan_qty(row.getBigDecimal("plan_qty"));
|
||||
mst.setQuality_scode(row.getString("quality_scode"));
|
||||
mst.setQty_unit_id(row.getString("base_unit_id"));
|
||||
mst.setBase_bill_code(row.getString("base_bill_code"));
|
||||
mst.setQty_unit_name(row.getString("base_unit_name"));
|
||||
mst.setUnit_weight(row.getBigDecimal("unit_weight"));
|
||||
// 载具信息
|
||||
{
|
||||
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleinfo>().lambda()
|
||||
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, row.getString("storagevehicle_code"))
|
||||
);
|
||||
|
||||
if (ObjectUtil.isEmpty(vehicleDao)) throw new BadRequestException("载具不存在!");
|
||||
|
||||
mst.setStoragevehicle_code(vehicleDao.getStoragevehicle_code());
|
||||
mst.setStoragevehicle_id(vehicleDao.getStoragevehicle_id());
|
||||
|
||||
// 更新载具对应物料关系、数量
|
||||
MdPbStoragevehicleext vehicleExtDao = iMdPbStoragevehicleextService.getOne(
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code, row.getString("storagevehicle_code"))
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(vehicleExtDao)) {
|
||||
vehicleExtDao.setWeight(mst.getPlan_qty());
|
||||
vehicleExtDao.setMaterial_id(mst.getMaterial_id());
|
||||
iMdPbStoragevehicleextService.updateById(vehicleExtDao);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onlyConfirm(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form.getString("struct_id"),form.getString("stor_id"),form.getString("material_code")},"参数不全");
|
||||
structivtBcpService.removeById(form.getString("struct_id"));
|
||||
StIvtBsrealstorattr stor = storattrService.getById(form.getString("stor_id"));
|
||||
MdMeMaterialbase mdMeMaterialbase = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
|
||||
.eq("material_code",form.getString("material_code")));
|
||||
if (mdMeMaterialbase==null){
|
||||
throw new BadRequestException("物料编码不正确"+form.getString("material_code"));
|
||||
}
|
||||
//新增库存
|
||||
StIvtStructivtHrBcp ivtDao = StIvtStructivtHrBcp.builder()
|
||||
.struct_id(form.getString("struct_id"))
|
||||
.struct_code(form.getString("struct_code"))
|
||||
.struct_name(form.getString("struct_name"))
|
||||
.material_id(mdMeMaterialbase.getMaterial_id())
|
||||
.quality_scode(IVTEnum.QUALITY_SCODE.code("合格品"))
|
||||
.pcsn(DateUtil.today())
|
||||
.ivt_level(IVTEnum.IVT_LEVEL.code("一级"))
|
||||
.is_active(true)
|
||||
.qty_unit_id(mdMeMaterialbase.getBase_unit_id())
|
||||
.instorage_time(DateUtil.now())
|
||||
.stor_id(form.getString("stor_id"))
|
||||
.canuse_qty(form.getBigDecimal("qty"))
|
||||
.workshop_id(stor.getProduct_area())
|
||||
.unit_weight(mdMeMaterialbase.getNet_weight())
|
||||
.build();
|
||||
structivtBcpService.save(ivtDao);
|
||||
// 插入库存变动记录
|
||||
JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao));
|
||||
param.put("change_type", ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY);
|
||||
param.put("change_qty", ivtDao.getCanuse_qty());
|
||||
param.put("result_qty", ivtDao.getCanuse_qty());
|
||||
param.put("bill_code","");
|
||||
param.put("inv_id","");
|
||||
param.put("bill_type_scode","");
|
||||
iStIvtStructivtflowService.insetIvtChange(param);
|
||||
//维护载具
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, form.getString("struct_code"))
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(StIvtStructattr::getInv_code, "")
|
||||
.set(StIvtStructattr::getStoragevehicle_code, form.getString("storagevehicle_code")));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String confirm(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id"));
|
||||
//checkParam(mst);
|
||||
if (StringUtils.isEmpty(mst.getStruct_code())) {
|
||||
throw new BadRequestException("当前入库单还未分配仓位!");
|
||||
}
|
||||
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(mst);
|
||||
|
||||
//新增库存
|
||||
StIvtStructivtHrBcp ivtDao = StIvtStructivtHrBcp.builder()
|
||||
.struct_id(mst.getStruct_id())
|
||||
.struct_code(mst.getStruct_code())
|
||||
.struct_name(mst.getStruct_name())
|
||||
.material_id(mst.getMaterial_id())
|
||||
.quality_scode(mst.getQuality_scode())
|
||||
.pcsn(mst.getPcsn())
|
||||
.ivt_level(mst.getIvt_level())
|
||||
.is_active(mst.getIs_active())
|
||||
.qty_unit_id(mst.getQty_unit_id())
|
||||
.instorage_time(DateUtil.now())
|
||||
.stor_id(mst.getStor_id())
|
||||
.canuse_qty(mst.getPlan_qty())
|
||||
.workshop_id(mst.getWorkshop_id())
|
||||
.unit_weight(mst.getUnit_weight())
|
||||
.build();
|
||||
structivtBcpService.save(ivtDao);
|
||||
|
||||
// 插入库存变动记录
|
||||
JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao));
|
||||
param.put("change_type", ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY);
|
||||
param.put("change_qty", ivtDao.getCanuse_qty());
|
||||
param.put("result_qty", ivtDao.getCanuse_qty());
|
||||
param.put("bill_code",mst.getBill_code());
|
||||
param.put("inv_id",mst.getIostorinv_id());
|
||||
param.put("bill_type_scode",mst.getBill_type());
|
||||
iStIvtStructivtflowService.insetIvtChange(param);
|
||||
|
||||
//维护载具
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, mst.getStruct_code())
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(StIvtStructattr::getInv_code, "")
|
||||
.set(StIvtStructattr::getStoragevehicle_code, mst.getStoragevehicle_code()));
|
||||
|
||||
// 更新任务为完成
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.eq(SchBaseTask::getTask_id, mst.getTask_id())
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String confirmTask(JSONObject form) {
|
||||
RedissonUtils.lock(()->{
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id"));
|
||||
checkParam(mst);
|
||||
//分配货位。下发任务,更新主单据状态。更新明细任务
|
||||
StIvtSectattr sect = sectattrService.getOne(
|
||||
new QueryWrapper<StIvtSectattr>().lambda()
|
||||
.eq(StIvtSectattr::getSect_name, "海柔半成品库区")
|
||||
);
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("sect_id", sect.getSect_id());
|
||||
jo.put("stor_id", sect.getStor_id());
|
||||
jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
|
||||
StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
|
||||
|
||||
if (ObjectUtil.isEmpty(stIvtStructattr)) {
|
||||
throw new BadRequestException("无可分配货位");
|
||||
}
|
||||
|
||||
仓库信息:
|
||||
{
|
||||
mst.setSect_id(stIvtStructattr.getSect_id());
|
||||
mst.setSect_code(stIvtStructattr.getSect_code());
|
||||
mst.setSect_name(stIvtStructattr.getSect_name());
|
||||
mst.setStruct_id(stIvtStructattr.getStruct_id());
|
||||
mst.setStruct_code(stIvtStructattr.getStruct_code());
|
||||
mst.setStruct_name(stIvtStructattr.getStruct_name());
|
||||
}
|
||||
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_HR_IN)
|
||||
.acs_task_type("7")
|
||||
.task_group_id(IdUtil.getStringId())
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code3(stIvtStructattr.getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.extParam(MapOf.of("material_id",mst.getMaterial_id(),
|
||||
"material_qty",mst.getPlan_qty(),"table_fk_id",mst.getIostorinv_id()))
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(mst);
|
||||
// 下发任务
|
||||
sendTask(mst.getTask_id());
|
||||
structattrService.lockStruct(stIvtStructattr.getStruct_code(), "入库锁",mst.getTask_id());
|
||||
},"banchengpin_ruku",2);
|
||||
return null;
|
||||
}
|
||||
|
||||
private void checkParam(StIvtIostorinvHrBcp mst) {
|
||||
if (mst == null || mst.getIs_delete() == true) {
|
||||
throw new BadRequestException("单据不存在");
|
||||
}
|
||||
if (!IOSEnum.BILL_STATUS.code("生成").equals(mst.getBill_status())) {
|
||||
throw new BadRequestException("单据" + mst.getBill_code() + "状态不是生成状态");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String updateBill(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvHrBcp mst = form.toJavaObject(StIvtIostorinvHrBcp.class);
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
for (Object item : form.getJSONArray("tableData")) {
|
||||
packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item)));
|
||||
}
|
||||
this.updateById(mst);
|
||||
return mst.getIostorinv_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void taskOperate(JSONObject form) {
|
||||
String task_id = form.getString("task_id");
|
||||
String status = form.getString("status");
|
||||
StIvtIostorinvHrBcp mst = this.getOne(new QueryWrapper<StIvtIostorinvHrBcp>().lambda().eq(StIvtIostorinvHrBcp::getTask_id, task_id));
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
if (mst!=null || !mst.getBill_status().equals(IOSEnum.BILL_STATUS.code("完成"))){
|
||||
this.update(new UpdateWrapper<StIvtIostorinvHrBcp>().lambda()
|
||||
.eq(StIvtIostorinvHrBcp::getTask_id, task_id)
|
||||
.set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("完成")));
|
||||
JSONObject mst_jo = new JSONObject();
|
||||
mst_jo.put("iostorinv_id", mst.getIostorinv_id());
|
||||
this.confirm(mst_jo);
|
||||
}
|
||||
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())){
|
||||
//执行中
|
||||
this.update(new UpdateWrapper<StIvtIostorinvHrBcp>().lambda().eq(StIvtIostorinvHrBcp::getTask_id, task_id)
|
||||
.set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("执行中")));
|
||||
|
||||
// 更新任务
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status,TaskStatusEnum.EXECUTING.getCode())
|
||||
.eq(SchBaseTask::getTask_id,task_id )
|
||||
);
|
||||
}else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())){
|
||||
// 取消
|
||||
delTask(task_id);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getPdaAll(JSONObject form) {
|
||||
return this.baseMapper.getPdaAll(form);
|
||||
}
|
||||
|
||||
private void delTask(String task_id) {
|
||||
|
||||
StIvtIostorinvHrBcp mstDao = this.getOne(
|
||||
new QueryWrapper<StIvtIostorinvHrBcp>().lambda()
|
||||
.eq(StIvtIostorinvHrBcp::getTask_id, task_id)
|
||||
);
|
||||
|
||||
// 解锁仓位
|
||||
structattrService.update(
|
||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(StIvtStructattr::getStruct_id, mstDao.getStruct_id())
|
||||
);
|
||||
|
||||
// 删除任务
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode())
|
||||
.eq(SchBaseTask::getTask_id, mstDao.getTask_id())
|
||||
);
|
||||
|
||||
// 更新主表
|
||||
mstDao.setSect_id("");
|
||||
mstDao.setSect_code("");
|
||||
mstDao.setSect_name("");
|
||||
mstDao.setStruct_id("");
|
||||
mstDao.setStruct_code("");
|
||||
mstDao.setStruct_name("");
|
||||
mstDao.setTask_id("");
|
||||
mstDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成"));
|
||||
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
this.updateById(mstDao);
|
||||
}
|
||||
|
||||
public void sendTask(String task_id) {
|
||||
|
||||
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||
JSONArray param = new JSONArray();
|
||||
param.add(JSON.parseObject(JSONUtil.toJsonStr(taskDao)));
|
||||
|
||||
// 1.下发任务
|
||||
WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class);
|
||||
Map<String, Object> result = bean.issueTaskToAcs3(param);
|
||||
|
||||
// 反馈失败报错
|
||||
if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {
|
||||
throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message"));
|
||||
}
|
||||
|
||||
// 2.更新任务状态
|
||||
taskDao.setTask_status(TaskStatusEnum.ISSUE.getCode());
|
||||
iSchBaseTaskService.updateById(taskDao);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,556 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.jsonwebtoken.lang.Assert;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.PointEvent;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.pcs_manage.PCSEnum;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
|
||||
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.mapper.StIvtIostorinvHrBcpMapper;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dto.HrBcpIostorInvQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 出入库记录表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Service
|
||||
public class StIvtIostorinvHrBcpOutServiceImpl extends ServiceImpl<StIvtIostorinvHrBcpMapper, StIvtIostorinvHrBcp> implements IStIvtIostorinvHrBcpOutService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtBsrealstorattrService storattrService;
|
||||
@Autowired
|
||||
private IStIvtStructivtBcpService structivtBcpService;
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService;
|
||||
@Autowired
|
||||
private DivRuleCpService divRuleCpService;
|
||||
@Autowired
|
||||
private IStIvtSectattrService sectattrService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService; // 任务表服务
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService materialbaseService;
|
||||
@Autowired
|
||||
private IStIvtStructivtflowService iStIvtStructivtflowService; // 库存变动服务
|
||||
@Autowired
|
||||
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
|
||||
|
||||
@Override
|
||||
public Object queryDtl(HrBcpIostorInvQuery query, PageQuery pageQuery) {
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
TableDataInfo build = TableDataInfo.build(this.getIoDtl(query));
|
||||
build.setTotalElements(page.getTotal());
|
||||
return build;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getIoDtl(HrBcpIostorInvQuery query) {
|
||||
return this.baseMapper.getIostorinv(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long[] ids) {
|
||||
for (Long id : ids) {
|
||||
StIvtIostorinvHrBcp dao = this.getOne(new QueryWrapper<StIvtIostorinvHrBcp>().eq("iostorinv_id", id));
|
||||
dao.setIs_delete(true);
|
||||
|
||||
//仓位解锁
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().set("inv_code", "").set("lock_type", IOSEnum.LOCK_TYPE.code("未锁定")).eq("struct_id", dao.getStruct_id()));
|
||||
this.updateById(dao);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void create(JSONObject form) {
|
||||
Assert.notNull(form, "参数不能为空");
|
||||
for (Object item : form.getJSONArray("tableData")) {
|
||||
StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
}
|
||||
packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item)));
|
||||
mst.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
this.save(mst);
|
||||
|
||||
//锁定起点
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, mst.getStruct_code())
|
||||
.set(StIvtStructattr::getInv_code,mst.getBill_code())
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库锁")));
|
||||
|
||||
// 判断是否自动下发
|
||||
if (ObjectUtil.isNotEmpty(form.getString("auto_send"))) {
|
||||
confirmTask(JSONObject.parseObject(JSON.toJSONString(mst)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void packageRow(StIvtIostorinvHrBcp mst, JSONObject row) {
|
||||
mst.setMaterial_id(row.getString("material_id"));
|
||||
mst.setPcsn(StringUtils.isNotEmpty(row.getString("pcsn")) ? row.getString("pcsn") : DateUtil.today());
|
||||
mst.setPlan_qty(row.getBigDecimal("plan_qty"));
|
||||
mst.setQuality_scode(row.getString("quality_scode"));
|
||||
mst.setQty_unit_id(row.getString("qty_unit_id"));
|
||||
mst.setBase_bill_code(row.getString("base_bill_code"));
|
||||
mst.setQty_unit_name(row.getString("qty_unit_name"));
|
||||
mst.setUnit_weight(row.getBigDecimal("unit_weight"));
|
||||
mst.setStoragevehicle_code(row.getString("storagevehicle_code"));
|
||||
mst.setStoragevehicle_id(row.getString("storagevehicle_id"));
|
||||
mst.setSect_id(row.getString("sect_id"));
|
||||
mst.setSect_code(row.getString("sect_code"));
|
||||
mst.setSect_name(row.getString("sect_name"));
|
||||
mst.setStruct_id(row.getString("struct_id"));
|
||||
mst.setStruct_code(row.getString("struct_code"));
|
||||
mst.setStruct_name(row.getString("struct_name"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String confirm(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id"));
|
||||
//checkParam(mst);
|
||||
if (StringUtils.isEmpty(mst.getStruct_code())) {
|
||||
throw new BadRequestException("当前入库单还未分配仓位!");
|
||||
}
|
||||
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(mst);
|
||||
|
||||
StIvtStructivtBcp ivtDao = structivtBcpService.getById(mst.getStruct_id());
|
||||
//删除库存
|
||||
structivtBcpService.remove(new QueryWrapper<StIvtStructivtBcp>().eq("struct_id", mst.getStruct_id()));
|
||||
|
||||
// 插入库存变动记录
|
||||
JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao));
|
||||
param.put("change_type", ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY);
|
||||
param.put("change_qty", ivtDao.getCanuse_qty());
|
||||
param.put("result_qty", 0);
|
||||
param.put("bill_code",mst.getBill_code());
|
||||
param.put("inv_id",mst.getIostorinv_id());
|
||||
param.put("bill_type_scode",mst.getBill_type());
|
||||
iStIvtStructivtflowService.insetIvtChange(param);
|
||||
|
||||
//维护载具
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, mst.getStruct_code())
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(StIvtStructattr::getInv_code,"")
|
||||
.set(StIvtStructattr::getStoragevehicle_code, ""));
|
||||
|
||||
// 更新任务为完成
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.eq(SchBaseTask::getTask_id, mst.getTask_id())
|
||||
);
|
||||
|
||||
// 更新载具扩展属性 - 释放载具对应物料关系 清空数量
|
||||
iMdPbStoragevehicleextService.update(
|
||||
new MdPbStoragevehicleext()
|
||||
.setMaterial_id("")
|
||||
.setStorage_qty(BigDecimal.valueOf(0)),
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code,mst.getStoragevehicle_code())
|
||||
);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void onlyConfirm(JSONObject form) {
|
||||
|
||||
StIvtStructivtBcp ivtDao = structivtBcpService.getById(form.getString("struct_id"));
|
||||
if (ivtDao!=null){
|
||||
//删除库存
|
||||
structivtBcpService.remove(new QueryWrapper<StIvtStructivtBcp>().eq("struct_id", form.getString("struct_id")));
|
||||
|
||||
// 插入库存变动记录
|
||||
JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao));
|
||||
param.put("change_type", ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY);
|
||||
param.put("change_qty", ivtDao.getCanuse_qty());
|
||||
param.put("result_qty", 0);
|
||||
param.put("bill_code","");
|
||||
param.put("inv_id","");
|
||||
param.put("bill_type_scode","");
|
||||
iStIvtStructivtflowService.insetIvtChange(param);
|
||||
//维护载具
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, ivtDao.getStruct_code())
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(StIvtStructattr::getInv_code,"")
|
||||
.set(StIvtStructattr::getStoragevehicle_code, StringUtils.isNotEmpty(form.getString("storagevehicle_code"))?form.getString("storagevehicle_code"):""));
|
||||
}
|
||||
if (StringUtils.isNotEmpty(form.getString("storagevehicle_code"))){
|
||||
// 更新载具扩展属性 - 释放载具对应物料关系 清空数量
|
||||
iMdPbStoragevehicleextService.update(
|
||||
new MdPbStoragevehicleext()
|
||||
.setMaterial_id("")
|
||||
.setStorage_qty(BigDecimal.valueOf(0)),
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code,form.getString("storagevehicle_code"))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public StIvtStructivtBcp autoConfirmout(JSONObject form) {
|
||||
StIvtStructivtBcp bcpStruct = RedissonUtils.lockAndReturn(() -> {
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("stor_id", form.getString("stor_id"));
|
||||
param.put("sect_id", form.getString("sect_id"));
|
||||
param.put("material_id", form.getString("material_id"));
|
||||
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
|
||||
// 2.锁定仓位
|
||||
StIvtStructivtBcp stIvtStructivtBcp;
|
||||
if (form.get("stIvtStructivt")==null){
|
||||
stIvtStructivtBcp = divRuleCpService.divRuleOutBcp(param);
|
||||
}else {
|
||||
stIvtStructivtBcp=(StIvtStructivtBcp)form.get("stIvtStructivt");
|
||||
}
|
||||
if ((stIvtStructivtBcp == null)){
|
||||
throw new BadRequestException("无可用货位");
|
||||
}
|
||||
StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
mst.setMaterial_id(material.getMaterial_id());
|
||||
mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today());
|
||||
mst.setPlan_qty(stIvtStructivtBcp.getCanuse_qty());
|
||||
mst.setQuality_scode(stIvtStructivtBcp.getQuality_scode());
|
||||
mst.setQty_unit_id(stIvtStructivtBcp.getQty_unit_id());
|
||||
mst.setBase_bill_code("");
|
||||
mst.setQty_unit_name(" ");
|
||||
mst.setUnit_weight(material.getNet_weight());
|
||||
mst.setStoragevehicle_code(" ");
|
||||
mst.setStoragevehicle_id(" ");
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
StIvtSectattr sect = sectattrService.getById(form.getString("sect_id"));
|
||||
mst.setSect_code(sect.getSect_code());
|
||||
mst.setSect_id(sect.getSect_id());
|
||||
mst.setSect_name(sect.getSect_name());
|
||||
mst.setStruct_id(stIvtStructivtBcp.getStruct_id());
|
||||
mst.setStruct_code(stIvtStructivtBcp.getStruct_code());
|
||||
mst.setStruct_name(stIvtStructivtBcp.getStruct_name());
|
||||
}
|
||||
mst.setCreate_id("1");
|
||||
mst.setCreate_name("acs");
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_OUT)
|
||||
.point_code1(stIvtStructivtBcp.getStruct_code())
|
||||
.point_code3(mst.getPoint_code())
|
||||
.acs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode())
|
||||
.task_group_id(IdUtil.getStringId())
|
||||
.extParam(MapOf.of("material_qty",stIvtStructivtBcp.getCanuse_qty(),
|
||||
"material_id",stIvtStructivtBcp.getMaterial_id(),"qtyArr",form.get("qtyArr")))
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
this.save(mst);
|
||||
this.lockStruct(stIvtStructivtBcp.getStruct_code(), "出库锁", mst.getTask_id());
|
||||
sendTask(mst.getTask_id());
|
||||
return stIvtStructivtBcp;
|
||||
}, form.getString("material_id"), 1);
|
||||
return bcpStruct;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructattr autoConfirmin(JSONObject form) {
|
||||
final StIvtStructattr[] structattr = new StIvtStructattr[1];
|
||||
RedissonUtils.lock(()->{
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", form.getString("material_id")));
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("stor_id", form.getString("stor_id"));
|
||||
param.put("sect_id", form.getString("sect_id"));
|
||||
param.put("material_id", form.getString("material_id"));
|
||||
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
|
||||
// 2.锁定仓位
|
||||
structattr[0] = divRuleCpService.divRuleIn(param);
|
||||
if (structattr[0] != null){
|
||||
StIvtIostorinvHrBcp mst = new StIvtIostorinvHrBcp();
|
||||
mst.setIostorinv_id(IdUtil.getStringId());
|
||||
mst.setBill_code(CodeUtil.getNewCode("IO_CODE"));
|
||||
mst.setBiz_date(form.getString("biz_date"));
|
||||
mst.setBill_type(form.getString("bill_type"));
|
||||
mst.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
mst.setRemark(form.getString("remark"));
|
||||
mst.setWorkshop_id(form.getString("product_code"));
|
||||
mst.setPoint_code(form.getString("point_code"));
|
||||
mst.setMaterial_id(material.getMaterial_id());
|
||||
mst.setPcsn(StringUtils.isNotEmpty(form.getString("pcsn")) ? form.getString("pcsn") : DateUtil.today());
|
||||
mst.setBase_bill_code("");
|
||||
mst.setQty_unit_name(" ");
|
||||
mst.setUnit_weight(material.getNet_weight());
|
||||
mst.setStoragevehicle_code(" ");
|
||||
mst.setStoragevehicle_id(" ");
|
||||
仓库数据:
|
||||
{
|
||||
StIvtBsrealstorattr stor = storattrService.getOne(new QueryWrapper<StIvtBsrealstorattr>().eq("stor_id", form.getString("stor_id")));
|
||||
mst.setStor_id(stor.getStor_id());
|
||||
mst.setStor_code(stor.getStor_code());
|
||||
mst.setStor_name(stor.getStor_name());
|
||||
StIvtSectattr sect = sectattrService.getById(form.getString("sect_id"));
|
||||
mst.setSect_code(sect.getSect_code());
|
||||
mst.setSect_id(sect.getSect_id());
|
||||
mst.setSect_name(sect.getSect_name());
|
||||
mst.setStruct_id(structattr[0].getStruct_id());
|
||||
mst.setStruct_code(structattr[0].getStruct_code());
|
||||
mst.setStruct_name(structattr[0].getStruct_name());
|
||||
}
|
||||
mst.setCreate_id("1");
|
||||
mst.setCreate_name("acs");
|
||||
mst.setCreate_time(DateUtil.now());
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_OUT)
|
||||
.point_code1(mst.getPoint_code())
|
||||
.point_code3(structattr[0].getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
this.save(mst);
|
||||
this.lockStruct(structattr[0].getStruct_code(), "出库锁",mst.getTask_id());
|
||||
}
|
||||
} ,"banchengpin_ruku",2);
|
||||
return structattr[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public void lockStruct(String struct, String type, String inv_code) {
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, struct)
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
|
||||
.set(StIvtStructattr::getInv_code,inv_code));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String confirmTask(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvHrBcp mst = this.getById(form.getString("iostorinv_id"));
|
||||
checkParam(mst);
|
||||
|
||||
PointEvent event = PointEvent.builder()
|
||||
.type(AcsTaskEnum.TASK_STRUCT_OUT)
|
||||
.acs_task_type("7")
|
||||
.task_group_id(IdUtil.getStringId())
|
||||
.point_code3(mst.getPoint_code())
|
||||
.point_code1(mst.getStruct_code())
|
||||
.vehicle_code(mst.getStoragevehicle_code())
|
||||
.product_area(mst.getWorkshop_id())
|
||||
.callback((Consumer<String>) mst::setTask_id)
|
||||
.build();
|
||||
BussEventMulticaster.Publish(event);
|
||||
|
||||
mst.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
|
||||
mst.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
this.updateById(mst);
|
||||
|
||||
// 下发任务
|
||||
sendTask(mst.getTask_id());
|
||||
return mst.getTask_id();
|
||||
}
|
||||
|
||||
|
||||
public void sendTask(String task_id) {
|
||||
|
||||
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
|
||||
JSONArray param = new JSONArray();
|
||||
param.add(JSON.parseObject(JSONUtil.toJsonStr(taskDao)));
|
||||
// 1.下发任务
|
||||
WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class);
|
||||
Map<String, Object> result = bean.issueTaskToAcs3(param);
|
||||
|
||||
// 反馈失败报错
|
||||
if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {
|
||||
throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message"));
|
||||
}
|
||||
|
||||
// 2.更新任务状态
|
||||
taskDao.setTask_status(TaskStatusEnum.ISSUE.getCode());
|
||||
iSchBaseTaskService.updateById(taskDao);
|
||||
}
|
||||
|
||||
private void checkParam(StIvtIostorinvHrBcp mst) {
|
||||
if (mst == null || mst.getIs_delete() == true) {
|
||||
throw new BadRequestException("单据不存在");
|
||||
}
|
||||
if (!IOSEnum.BILL_STATUS.code("生成").equals(mst.getBill_status())) {
|
||||
throw new BadRequestException("单据" + mst.getBill_code() + "状态不是生成状态");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String updateBill(JSONObject form) {
|
||||
Assert.notNull(new Object[]{form, form.get("iostorinv_id")}, "请求参数不能为空");
|
||||
StIvtIostorinvHrBcp mst = form.toJavaObject(StIvtIostorinvHrBcp.class);
|
||||
mst.setUpdate_id(SecurityUtils.getCurrentUserId());
|
||||
mst.setUpdate_name(SecurityUtils.getCurrentNickName());
|
||||
mst.setUpdate_time(DateUtil.now());
|
||||
for (Object item : form.getJSONArray("tableData")) {
|
||||
packageRow(mst, JSONObject.parseObject(JSON.toJSONString(item)));
|
||||
}
|
||||
this.updateById(mst);
|
||||
return mst.getIostorinv_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void taskOperate(JSONObject form) {
|
||||
String task_id = form.getString("task_id");
|
||||
String status = form.getString("status");
|
||||
StIvtIostorinvHrBcp mst = this.getOne(new QueryWrapper<StIvtIostorinvHrBcp>().lambda()
|
||||
.eq(StIvtIostorinvHrBcp::getTask_id, task_id));
|
||||
if (mst!=null && !mst.getWork_status().equals(PCSEnum.BILL_STATUS.code("完成")) && status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
// 完成
|
||||
this.update(new UpdateWrapper<StIvtIostorinvHrBcp>().lambda()
|
||||
.eq(StIvtIostorinvHrBcp::getTask_id, task_id)
|
||||
.set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("完成")));
|
||||
JSONObject mst_jo = new JSONObject();
|
||||
mst_jo.put("iostorinv_id", mst.getIostorinv_id());
|
||||
this.confirm(mst_jo);
|
||||
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
// 执行中
|
||||
this.update(new UpdateWrapper<StIvtIostorinvHrBcp>().lambda()
|
||||
.eq(StIvtIostorinvHrBcp::getTask_id, task_id)
|
||||
.set(StIvtIostorinvHrBcp::getWork_status, IOSEnum.WORK_STATUS.code("执行中")));
|
||||
|
||||
// 更新任务
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status,TaskStatusEnum.EXECUTING.getCode())
|
||||
.eq(SchBaseTask::getTask_id,task_id )
|
||||
);
|
||||
} else if(status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
// 取消
|
||||
delTask(task_id);
|
||||
}
|
||||
}
|
||||
|
||||
private void delTask(String task_id) {
|
||||
|
||||
StIvtIostorinvHrBcp mstDao = this.getOne(
|
||||
new QueryWrapper<StIvtIostorinvHrBcp>().lambda()
|
||||
.eq(StIvtIostorinvHrBcp::getTask_id, task_id)
|
||||
);
|
||||
|
||||
// 删除任务
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status, TaskStatusEnum.CANCEL.getCode())
|
||||
.eq(SchBaseTask::getTask_id, mstDao.getTask_id())
|
||||
);
|
||||
|
||||
// 更新主表
|
||||
mstDao.setTask_id("");
|
||||
mstDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成"));
|
||||
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
this.updateById(mstDao);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
public interface IStIvtStructivtHrBcpService extends IService<StIvtStructivtHrBcp> {
|
||||
|
||||
Object packageQuery(StructIvtHrBcpQuery query, PageQuery page);
|
||||
|
||||
List<Map> queryAll(StructIvtHrBcpQuery query);
|
||||
|
||||
StIvtStructivtBcp queryIvtOutOne(JSONObject json);
|
||||
|
||||
Object getBcpIvt(StructIvtHrBcpQuery query, PageQuery page);
|
||||
|
||||
List<Map> getBcpIvtInfo(JSONObject jo);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtflowHr;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存变动记录表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
public interface IStIvtStructivtflowHrService extends IService<StIvtStructivtflowHr> {
|
||||
|
||||
void recordStructivtFlow(StIvtStructivtflowDto flowDto);
|
||||
|
||||
void insetIvtChange(JSONObject json);
|
||||
|
||||
Object queryAll(IvtFlowQuery query, PageQuery page);
|
||||
|
||||
List<StIvtStructivtflowVo> queryAll(IvtFlowQuery query);
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存表
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("st_ivt_structivt_hr_bcp")
|
||||
@Builder
|
||||
public class StIvtStructivtHrBcp implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 仓位标识
|
||||
*/
|
||||
@TableId
|
||||
private String struct_id;
|
||||
|
||||
/**
|
||||
* 仓位编码
|
||||
*/
|
||||
private String struct_code;
|
||||
|
||||
/**
|
||||
* 仓位名称
|
||||
*/
|
||||
private String struct_name;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
*/
|
||||
private String material_id;
|
||||
|
||||
/**
|
||||
* 品质类型
|
||||
*/
|
||||
private String quality_scode;
|
||||
|
||||
/**
|
||||
* 库存等级
|
||||
*/
|
||||
private String ivt_level;
|
||||
|
||||
/**
|
||||
* 是否可用
|
||||
*/
|
||||
private Boolean is_active;
|
||||
|
||||
/**
|
||||
* 批次
|
||||
*/
|
||||
private String pcsn;
|
||||
|
||||
/**
|
||||
* 库存数
|
||||
*/
|
||||
private BigDecimal canuse_qty;
|
||||
|
||||
/**
|
||||
* 计量单位标识
|
||||
*/
|
||||
private String qty_unit_id;
|
||||
|
||||
/**
|
||||
* 入库时间
|
||||
*/
|
||||
private String instorage_time;
|
||||
|
||||
/**
|
||||
* 仓库标识
|
||||
*/
|
||||
private String stor_id;
|
||||
|
||||
/**
|
||||
* 车间标识
|
||||
*/
|
||||
private String workshop_id;
|
||||
|
||||
/**
|
||||
* 是否已挑料
|
||||
*/
|
||||
private Boolean is_pick;
|
||||
|
||||
/**
|
||||
* 单重
|
||||
*/
|
||||
private BigDecimal unit_weight;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存变动记录表
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("st_ivt_structivtflow_hr_bcp")
|
||||
public class StIvtStructivtflowHr implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 记录标识
|
||||
*/
|
||||
private String change_id;
|
||||
|
||||
/**
|
||||
* 仓位标识
|
||||
*/
|
||||
private String struct_id;
|
||||
|
||||
/**
|
||||
* 仓位编码
|
||||
*/
|
||||
private String struct_code;
|
||||
|
||||
/**
|
||||
* 仓位名称
|
||||
*/
|
||||
private String struct_name;
|
||||
|
||||
/**
|
||||
* 物料标识
|
||||
*/
|
||||
private String material_id;
|
||||
|
||||
/**
|
||||
* 批次
|
||||
*/
|
||||
private String pcsn;
|
||||
/**
|
||||
* 品质类型
|
||||
*/
|
||||
private String quality_scode;
|
||||
|
||||
/**
|
||||
* 是否可用
|
||||
*/
|
||||
private Boolean is_active;
|
||||
|
||||
/**
|
||||
* 库存等级
|
||||
*/
|
||||
private String ivt_level;
|
||||
|
||||
/**
|
||||
* 仓库标识
|
||||
*/
|
||||
private String stor_id;
|
||||
|
||||
/**
|
||||
* 单据类型
|
||||
*/
|
||||
private String bill_type_scode;
|
||||
|
||||
/**
|
||||
* 单据标识
|
||||
*/
|
||||
private String inv_id;
|
||||
|
||||
/**
|
||||
* 单据编号
|
||||
*/
|
||||
private String bill_code;
|
||||
|
||||
/**
|
||||
* 单据表名
|
||||
*/
|
||||
private String bill_table;
|
||||
|
||||
/**
|
||||
* 变动类型:单据类型
|
||||
*/
|
||||
private String change_type_scode;
|
||||
|
||||
/**
|
||||
* 变动时间
|
||||
*/
|
||||
private String change_time;
|
||||
|
||||
/**
|
||||
* 变动人
|
||||
*/
|
||||
private String change_person_id;
|
||||
|
||||
/**
|
||||
* 变动人姓名
|
||||
*/
|
||||
private String change_person_name;
|
||||
|
||||
/**
|
||||
* 变动数
|
||||
*/
|
||||
private BigDecimal change_qty;
|
||||
|
||||
/**
|
||||
* 结存数
|
||||
*/
|
||||
private BigDecimal result_qty;
|
||||
|
||||
/**
|
||||
* 数量计量单位标识
|
||||
*/
|
||||
private String qty_unit_id;
|
||||
|
||||
/**
|
||||
* 车间标识
|
||||
*/
|
||||
private String product_area;
|
||||
/**
|
||||
* 车间标识
|
||||
*/
|
||||
private Boolean is_add;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
public interface StIvtStructivtHrBcpMapper extends BaseMapper<StIvtStructivtHrBcp> {
|
||||
|
||||
int batchUpdateByParam(@Param("event") List<Map> event, @Param("struct_code")String struct_code);
|
||||
|
||||
List<Map> getBcpIvt(@Param("query") StructIvtHrBcpQuery query, @Param("pageQuery") PageQuery pageQuery);
|
||||
|
||||
List<Map> getBcpIvtInfo(@Param("map") JSONObject map);
|
||||
|
||||
List<Map> getStructIvtInfo(@Param("map") Map map);
|
||||
|
||||
List<Map> packageQuery(@Param("query") StructIvtHrBcpQuery query);
|
||||
|
||||
List<Map> getPdaBcpIvt(JSONObject jo);
|
||||
|
||||
List<Map> getPdaBcpMaterialIvt(JSONObject jo);
|
||||
|
||||
StIvtStructivtBcp queryIvtOutOne(JSONObject json);
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtflowHr;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存变动记录表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
public interface StIvtStructivtflowHrBcpMapper extends BaseMapper<StIvtStructivtflowHr> {
|
||||
|
||||
List<Map> queryAll(@Param("query") IvtFlowQuery query);
|
||||
}
|
||||
@@ -0,0 +1,244 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper">
|
||||
|
||||
<update id="batchUpdateByParam">
|
||||
update st_ivt_structivt_hr_bcp set
|
||||
<foreach collection="event" item="item" separator=",">
|
||||
${item.field} = ${item.field}
|
||||
<choose>
|
||||
<when test="item.add == true">
|
||||
+
|
||||
</when>
|
||||
<otherwise>
|
||||
-
|
||||
</otherwise>
|
||||
</choose>
|
||||
#{item.value,jdbcType=DECIMAL}
|
||||
</foreach>
|
||||
where struct_code = #{struct_code}
|
||||
</update>
|
||||
|
||||
<select id="getBcpIvt" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mu.unit_name AS qty_unit_name,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
mb.material_spec,
|
||||
sa.sect_id,
|
||||
sa.sect_code,
|
||||
sa.sect_name,
|
||||
sa.struct_id,
|
||||
sa.struct_code,
|
||||
sa.struct_name,
|
||||
sa.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
|
||||
LEFT JOIN st_ivt_structattr sa ON sa.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
ivt.canuse_qty > 0
|
||||
AND
|
||||
sa.lock_type = '0'
|
||||
<if test="query.material_search != null and query.material_search != ''">
|
||||
and (mb.material_code = #{query.material_search} OR
|
||||
mb.material_name = #{query.material_search} OR
|
||||
mb.material_spec = #{query.material_search})
|
||||
</if>
|
||||
<if test="query.sect_id != null and query.sect_id != ''">
|
||||
and sa.sect_id = #{query.sect_id}
|
||||
</if>
|
||||
<if test="query.struct_search != null and query.struct_search != ''">
|
||||
and (sa.struct_code = #{query.struct_search} OR sa.struct_name = #{query.struct_search})
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getBcpIvtInfo" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mu.unit_name AS qty_unit_name,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
sa.sect_id,
|
||||
sa.sect_code,
|
||||
sa.sect_name,
|
||||
sa.struct_id,
|
||||
sa.struct_code,
|
||||
sa.struct_name,
|
||||
sa.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
|
||||
LEFT JOIN st_ivt_structattr sa ON sa.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
ivt.canuse_qty > 0
|
||||
AND
|
||||
sa.lock_type = '0'
|
||||
<if test="map.material_id != null and map.material_id != ''">
|
||||
and #{map.material_id} = ivt.material_id
|
||||
</if>
|
||||
<if test="map.stor_id != null and map.stor_id != ''">
|
||||
and ivt.stor_id = #{map.stor_id}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getStructIvtInfo" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mu.unit_name AS qty_unit_name,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
sa.sect_id,
|
||||
sa.sect_code,
|
||||
sa.sect_name,
|
||||
sa.struct_id,
|
||||
sa.struct_code,
|
||||
sa.struct_name,
|
||||
sa.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
|
||||
LEFT JOIN st_ivt_structattr sa ON sa.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
<if test="map.struct_code != null and map.struct_code != ''">
|
||||
and #{map.struct_code} = sa.struct_code
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="packageQuery" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
unit.unit_name,
|
||||
attr.struct_name,
|
||||
attr.sect_code,
|
||||
attr.sect_name,
|
||||
attr.stor_name,
|
||||
attr.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id
|
||||
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
1=1
|
||||
<if test="query.material_code!= null and query.material_code != ''">
|
||||
and mater.material_code LIKE #{query.material_code} or
|
||||
(mater.material_name LIKE #{query.material_code}) or
|
||||
(mater.material_spec LIKE #{query.material_code})
|
||||
</if>
|
||||
<if test="query.struct_code!= null and query.struct_code != ''">
|
||||
and attr.struct_code LIKE #{query.struct_code} or
|
||||
(attr.struct_name LIKE #{query.struct_code})
|
||||
</if>
|
||||
<if test="query.start_time!= null and query.start_time != ''">
|
||||
and ivt.instorage_time >= #{query.start_time}
|
||||
</if>
|
||||
<if test="query.end_time!= null and query.end_time != ''">
|
||||
and ivt.instorage_time <= #{query.end_time}
|
||||
</if>
|
||||
</where>
|
||||
order by ivt.instorage_time DESC,attr.struct_code ASC
|
||||
</select>
|
||||
|
||||
<select id="getPdaBcpIvt" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
ivt.canuse_qty AS total_qty,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
unit.unit_name,
|
||||
ROUND(ivt.canuse_qty / mater.net_weight,3) AS qty,
|
||||
attr.struct_name,
|
||||
attr.sect_code,
|
||||
attr.sect_name,
|
||||
attr.stor_name,
|
||||
attr.storagevehicle_code
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id
|
||||
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
attr.lock_type = '0'
|
||||
<if test="material_code!= null and material_code != ''">
|
||||
and mater.material_code LIKE '%${material_code}%' or
|
||||
(mater.material_name LIKE '%${material_code}%') or
|
||||
(mater.material_spec LIKE '%${material_code}%')
|
||||
</if>
|
||||
<if test="struct_code!= null and struct_code != ''">
|
||||
and attr.struct_code LIKE '%${struct_code}%' or
|
||||
(attr.struct_name LIKE '%${struct_code}%')
|
||||
</if>
|
||||
</where>
|
||||
order by ivt.instorage_time DESC,attr.struct_code ASC
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getPdaBcpMaterialIvt" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mu.unit_name AS qty_unit_name,
|
||||
mb.material_code,
|
||||
mb.material_name,
|
||||
mb.material_spec,
|
||||
sa.sect_id,
|
||||
sa.sect_code,
|
||||
sa.sect_name,
|
||||
sa.struct_id,
|
||||
sa.struct_code,
|
||||
sa.struct_name,
|
||||
sa.storagevehicle_code,
|
||||
ROUND(ivt.canuse_qty / unit_weight,3) AS qty
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
|
||||
LEFT JOIN st_ivt_structattr sa ON sa.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
ivt.canuse_qty > 0
|
||||
AND
|
||||
sa.lock_type = '0'
|
||||
<if test="material_code != null and material_code != ''">
|
||||
and (mb.material_code LIKE '%${material_code}%' or
|
||||
mb.material_name LIKE '%${material_code}%')
|
||||
</if>
|
||||
<if test="struct_code != null and struct_code != ''">
|
||||
and (sa.struct_code LIKE '%${struct_code}%' or
|
||||
sa.struct_name LIKE '%${struct_code}%')
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="queryIvtOutOne" resultType="org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp">
|
||||
SELECT
|
||||
ivt.*
|
||||
FROM
|
||||
st_ivt_structivt_hr_bcp ivt
|
||||
LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id
|
||||
WHERE ivt.canuse_qty > 0 and attr.is_used = '1' and lock_type = '0'
|
||||
<if test="stor_id != null and stor_id != ''">
|
||||
and attr.stor_id = #{stor_id}
|
||||
</if>
|
||||
<if test="sect_id != null and sect_id != ''">
|
||||
and attr.sect_id = #{sect_id}
|
||||
</if>
|
||||
<if test="material_id != null and material_id != ''">
|
||||
and ivt.material_id = #{material_id}
|
||||
</if>
|
||||
order by ivt.canuse_qty ASC,ivt.struct_code ASC
|
||||
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtflowHrBcpMapper">
|
||||
|
||||
<select id="queryAll" resultType="java.util.Map">
|
||||
SELECT
|
||||
ivt.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
attr.stor_name,
|
||||
attr.stor_name,
|
||||
attr.sect_name,
|
||||
unit.unit_name
|
||||
FROM
|
||||
st_ivt_structivtflow_hr_bcp ivt
|
||||
LEFT JOIN md_me_materialbase mater ON mater.material_id = ivt.material_id
|
||||
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
|
||||
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id
|
||||
<where>
|
||||
1 = 1
|
||||
<if test="query.struct_code != null and query.struct_code != ''">
|
||||
and (ivt.struct_code LIKE '%${query.struct_code}%' or
|
||||
ivt.struct_name LIKE '%${query.struct_code}%' )
|
||||
</if>
|
||||
<if test="query.material_code != null and query.material_code != ''">
|
||||
and (mater.material_code LIKE '%${query.material_code}%' or
|
||||
mater.material_name LIKE '%${query.material_code}%' or
|
||||
mater.material_spec LIKE '%${query.material_code}%'
|
||||
)
|
||||
</if>
|
||||
<if test="query.bill_code != null and query.bill_code != ''">
|
||||
and ivt.bill_code LIKE '%${query.bill_code}%'
|
||||
</if>
|
||||
<if test="query.change_type_scode != null and query.change_type_scode != ''">
|
||||
and ivt.change_type_scode = #{query.change_type_scode}
|
||||
</if>
|
||||
<if test="query.bill_type_scode != null and query.bill_type_scode != ''">
|
||||
and ivt.bill_type_scode = #{query.bill_type_scode}
|
||||
</if>
|
||||
<if test="query.stor_id != null and query.stor_id != ''">
|
||||
and ivt.stor_id = #{query.stor_id}
|
||||
</if>
|
||||
</where>
|
||||
order by ivt.change_time desc,ivt.struct_code ASC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,37 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.query.BaseQuery;
|
||||
import org.nl.common.domain.query.QParam;
|
||||
import org.nl.common.enums.QueryTEnum;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/5/4 19:49
|
||||
*/
|
||||
@Data
|
||||
public class StructIvtHrBcpQuery extends BaseQuery<StIvtStructivtBcp> {
|
||||
|
||||
|
||||
private String sect_id;
|
||||
|
||||
private String struct_search;
|
||||
|
||||
private String material_search;
|
||||
|
||||
private String material_code;
|
||||
|
||||
private String struct_code;
|
||||
|
||||
private Boolean is_delete = false;
|
||||
|
||||
|
||||
@Override
|
||||
public void paramMapping() {
|
||||
super.doP.put("material_search", QParam.builder().k(new String[]{"material_search"}).type(QueryTEnum.LK).build());
|
||||
super.doP.put("struct_search", QParam.builder().k(new String[]{"struct_search"}).type(QueryTEnum.LK).build());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dto.StructIvtHrBcpQuery;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Service
|
||||
public class StIvtStructivtHrBcpServiceImpl extends ServiceImpl<StIvtStructivtHrBcpMapper, StIvtStructivtHrBcp> implements IStIvtStructivtHrBcpService {
|
||||
|
||||
@Override
|
||||
public Object packageQuery(StructIvtHrBcpQuery query, PageQuery pageQuery) {
|
||||
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
TableDataInfo build = TableDataInfo.build(this.baseMapper.packageQuery(query));
|
||||
build.setTotalElements(page.getTotal());
|
||||
|
||||
return build;
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructivtBcp queryIvtOutOne(JSONObject json) {
|
||||
return this.baseMapper.queryIvtOutOne(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> queryAll(StructIvtHrBcpQuery query) {
|
||||
return this.baseMapper.packageQuery(query);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getBcpIvt(StructIvtHrBcpQuery query, PageQuery pageQuery) {
|
||||
com.github.pagehelper.Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
List<Map> mst_detail = this.baseMapper.getBcpIvt(query, pageQuery);
|
||||
TableDataInfo<Map> build = TableDataInfo.build(mst_detail);
|
||||
build.setTotalElements(page.getTotal());
|
||||
return build;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Map> getBcpIvtInfo(JSONObject jo) {
|
||||
return this.baseMapper.getBcpIvtInfo(jo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.structIvt.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto;
|
||||
import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowVo;
|
||||
import org.nl.wms.storage_manage.productmanage.service.structIvt.dto.IvtFlowQuery;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtflowHr;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtflowHrBcpMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓位库存变动记录表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author generator
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@Service
|
||||
public class StIvtStructivtflowHrServiceImpl extends ServiceImpl<StIvtStructivtflowHrBcpMapper, StIvtStructivtflowHr> implements IStIvtStructivtflowHrService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService;
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService materialbaseService;
|
||||
@Autowired
|
||||
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void recordStructivtFlow(StIvtStructivtflowDto flowDto) {
|
||||
StIvtStructivtflowHr flow = new StIvtStructivtflowHr();
|
||||
StIvtStructattr struct_attr = structattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_code", flowDto.getStruct_code()));
|
||||
flow.setChange_id(IdUtil.getStringId());
|
||||
物料信息: {
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", flowDto.getMaterial_id()));
|
||||
flow.setPcsn(flowDto.getPcsn());
|
||||
}
|
||||
仓库信息:{
|
||||
flow.setStruct_name(struct_attr.getStruct_name());
|
||||
flow.setStruct_code(struct_attr.getStruct_code());
|
||||
flow.setStruct_id(struct_attr.getStruct_id());
|
||||
flow.setStor_id(struct_attr.getStor_id());
|
||||
}
|
||||
flow.setBill_code(flowDto.getBill_code());
|
||||
flow.setChange_type_scode(flowDto.getChange_type_scode().getCode());
|
||||
flow.setBill_table(flowDto.getBill_table());
|
||||
flow.setChange_qty(flowDto.getChange_qty());
|
||||
flow.setResult_qty(flowDto.getResult_qty());
|
||||
this.save(flow);
|
||||
|
||||
struct_attr.setStoragevehicle_code(flowDto.getStoragevehicle_code());
|
||||
struct_attr.setInv_code(flowDto.getBill_code());
|
||||
struct_attr.setInv_type(flowDto.getChange_type_scode().getCode());
|
||||
//判断如果在3个状态之内,更新操作
|
||||
int tag = 1 << CHANGE_BILL_TYPE_ENUM.IMOVEINV_OUT_CONFIRM.getBitType()
|
||||
| 1 << CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_CONFIRM.getBitType()
|
||||
| 1 << CHANGE_BILL_TYPE_ENUM.MOVEINV_IN_CONFIRM.getBitType()
|
||||
| 1 << CHANGE_BILL_TYPE_ENUM.CHECK_OUT.getBitType()
|
||||
| 1 << CHANGE_BILL_TYPE_ENUM.IOSTORINV_OUT_CONFIRM.getBitType();
|
||||
if ((tag &~ 1 << flowDto.getChange_type_scode().getBitType()) != tag){
|
||||
struct_attr.setInv_code("");
|
||||
struct_attr.setInv_type("");
|
||||
}
|
||||
structattrService.updateById(struct_attr);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void insetIvtChange(JSONObject json) {
|
||||
|
||||
StIvtStructattr ivtDao = iStIvtStructattrService.getById(json.getString("struct_id"));
|
||||
|
||||
StIvtStructivtflowHr dao = new StIvtStructivtflowHr();
|
||||
dao.setChange_id(IdUtil.getStringId());
|
||||
dao.setStruct_id(json.getString("struct_id"));
|
||||
dao.setStruct_code(json.getString("struct_code"));
|
||||
dao.setStruct_name(json.getString("struct_name"));
|
||||
dao.setMaterial_id(json.getString("material_id"));
|
||||
dao.setQuality_scode(json.getString("quality_scode"));
|
||||
dao.setIvt_level(json.getString("ivt_level"));
|
||||
dao.setIs_active(json.getBoolean("is_active"));
|
||||
dao.setPcsn(json.getString("pcsn"));
|
||||
dao.setStor_id(ivtDao.getStor_id());
|
||||
dao.setChange_type_scode(json.getString("change_type"));
|
||||
dao.setChange_time(DateUtil.now());
|
||||
dao.setChange_person_id(SecurityUtils.getCurrentUserId());
|
||||
dao.setChange_person_name(SecurityUtils.getCurrentNickName());
|
||||
dao.setChange_qty(json.getBigDecimal("change_qty"));
|
||||
dao.setResult_qty(json.getBigDecimal("result_qty"));
|
||||
dao.setQty_unit_id(json.getString("qty_unit_id"));
|
||||
dao.setProduct_area(json.getString("workshop_id"));
|
||||
dao.setBill_code(json.getString("bill_code"));
|
||||
dao.setBill_type_scode(json.getString("bill_type_scode"));
|
||||
dao.setInv_id(json.getString("inv_id"));
|
||||
this.save(dao);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object queryAll(IvtFlowQuery query, PageQuery pageQuery) {
|
||||
Page<Object> page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize());
|
||||
TableDataInfo build = TableDataInfo.build(this.baseMapper.queryAll(query));
|
||||
build.setTotalElements(page.getTotal());
|
||||
return build;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StIvtStructivtflowVo> queryAll(IvtFlowQuery query) {
|
||||
List<Map> maps = this.baseMapper.queryAll(query);
|
||||
List<StIvtStructivtflowVo> list = JSONArray.parseArray(JSON.toJSONString(maps), StIvtStructivtflowVo.class);
|
||||
return list;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user