rev:出库修改
This commit is contained in:
@@ -42,9 +42,9 @@ public enum AcsTaskEnum {
|
||||
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
|
||||
TASK_STRUCT_CP_CHECK("13","-盘点"),
|
||||
TASK_WASH_LACK("20","清洗机-缺料请求"),
|
||||
TASK_WASH_EMP("21","清洗机-空叫空框"),
|
||||
TASK_WASH_EMP("21","清洗机-空框请求"),
|
||||
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
|
||||
TASK_WASH_FULL_QZ("23","清洗机-满料请求强制"),//去异常位:
|
||||
TASK_WASH_FULL_QZ("23","清洗机-强制搬出"),//去异常位:
|
||||
TASK_Engrave_CALL("24","刻字机上料"),
|
||||
TASK_Engrave_EMPTY("25","刻字输送线-空框送回"),
|
||||
TASK_POINT_TO_POINT("99","点对点搬运"),
|
||||
|
||||
@@ -23,6 +23,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
JSONArray form = new JSONArray();
|
||||
for (Object o : arr) {
|
||||
JSONObject task = (JSONObject) o;
|
||||
if (task.get("is_send")==null){
|
||||
task.put("is_send",true);
|
||||
}
|
||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||
, "task_type", task.getString("acs_task_type")//垃圾
|
||||
, "task_code", task.getString("task_code")
|
||||
@@ -51,6 +54,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
JSONArray form = new JSONArray();
|
||||
for (Object o : arr) {
|
||||
JSONObject task = (JSONObject) o;
|
||||
if (task.get("is_send")==null){
|
||||
task.put("is_send",true);
|
||||
}
|
||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||
, "task_code", task.getString("task_code")
|
||||
, "start_point_code", task.getString("point_code1")//起点
|
||||
@@ -74,6 +80,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
JSONArray form = new JSONArray();
|
||||
for (Object o : arr) {
|
||||
JSONObject task = (JSONObject) o;
|
||||
if (task.get("is_send")==null){
|
||||
task.put("is_send",true);
|
||||
}
|
||||
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
|
||||
, "task_code", task.getString("task_code")
|
||||
, "task_group_id", task.getString("task_group_id")
|
||||
|
||||
@@ -96,4 +96,11 @@ public class StructattrController {
|
||||
public ResponseEntity<Object> getSectCascader(@RequestBody JSONObject json) {
|
||||
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/setMaterial")
|
||||
@Log("修改仓位库存")
|
||||
//("查询联级仓位")
|
||||
public ResponseEntity<Object> setMaterial(@RequestBody JSONObject json) {
|
||||
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,6 +160,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
||||
this.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, struct_code)
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
|
||||
.set(StIvtStructattr::getInv_code,inv_code));
|
||||
.set(StIvtStructattr::getInv_code,inv_code)
|
||||
.set(StIvtStructattr::getTask_code,inv_code));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,18 @@ import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.mps_manage.deliveryorder.service.dao.PcsDeliveryOrder;
|
||||
import org.nl.wms.mps_manage.deliveryorder.service.dao.mapper.PcsDeliveryOrderMapper;
|
||||
import org.nl.wms.mps_manage.deliveryorder.service.IPcsDeliveryOrderService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.storage_manage.semimanage.MLEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -50,6 +53,10 @@ public class PcsDeliveryOrderServiceImpl extends ServiceImpl<PcsDeliveryOrderMap
|
||||
order.setCreate_id(currentUserId);
|
||||
order.setCreate_name(nickName);
|
||||
order.setCreate_time(DateUtil.now());
|
||||
order.setStatus(MLEnum.BILL_STATUS.code("生成"));
|
||||
MdMeMaterialbase one = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
|
||||
.eq("material_code", form.getString("material_code")));
|
||||
order.setMaterial_id(one.getMaterial_id());
|
||||
this.save(order);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public class MpsSaleOrder implements Serializable{
|
||||
/**
|
||||
* 销售单标识
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@TableId
|
||||
@ApiModelProperty(value = "/**销售单标识*/")
|
||||
private String sale_id;
|
||||
/**
|
||||
@@ -194,6 +194,11 @@ public class MpsSaleOrder implements Serializable{
|
||||
*/
|
||||
@ApiModelProperty(value = "/**aps最早开始时间(下料时间)*/")
|
||||
private String early_start_time;
|
||||
/**
|
||||
* aps订单号
|
||||
*/
|
||||
@ApiModelProperty(value = "/**aps订单号 */")
|
||||
private String aps_sale_code;
|
||||
/**
|
||||
* aps订单状态
|
||||
*/
|
||||
|
||||
@@ -39,34 +39,34 @@
|
||||
</select>
|
||||
|
||||
<select id="queryAll" resultType="java.util.Map">
|
||||
SELECT
|
||||
der.*,
|
||||
DATE_FORMAT(der.plandeliver_date, '%Y-%m-%d' ) AS plandeliverDate,
|
||||
DATE_FORMAT(der.create_time, '%Y-%m-%d %H:%i:%s' ) AS createTime,
|
||||
DATE_FORMAT(der.aps_update_time, '%Y-%m-%d %H:%i:%s' ) AS apsUpdateTime,
|
||||
mater.material_name
|
||||
FROM
|
||||
mps_sale_order der
|
||||
LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code
|
||||
<where>
|
||||
der.is_delete = '0'
|
||||
<if test="query.sale_code != null">
|
||||
and der.sale_code = #{query.sale_code}
|
||||
</if>
|
||||
<if test="query.status != null">
|
||||
and der.status = #{query.status}
|
||||
</if>
|
||||
<if test="query.sale_type != null">
|
||||
and der.sale_type = #{query.sale_type}
|
||||
</if>
|
||||
<if test="query.cust_code != null">
|
||||
and der.cust_code = #{query.cust_code}
|
||||
</if>
|
||||
|
||||
</where>
|
||||
|
||||
|
||||
</select>
|
||||
SELECT
|
||||
der.*,
|
||||
DATE_FORMAT(der.plandeliver_date, '%Y-%m-%d' ) AS plandeliverDate,
|
||||
DATE_FORMAT(der.create_time, '%Y-%m-%d %H:%i:%s' ) AS createTime,
|
||||
DATE_FORMAT(der.aps_update_time, '%Y-%m-%d %H:%i:%s' ) AS apsUpdateTime,
|
||||
mater.material_name
|
||||
FROM
|
||||
mps_sale_order der
|
||||
LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code
|
||||
<where>
|
||||
der.is_delete = '0'
|
||||
<if test="query.sale_code != null">
|
||||
and der.sale_code = #{query.sale_code}
|
||||
</if>
|
||||
<if test="query.status != null">
|
||||
and der.status = #{query.status}
|
||||
</if>
|
||||
<if test="query.sale_type != null">
|
||||
and der.sale_type = #{query.sale_type}
|
||||
</if>
|
||||
<if test="query.cust_code != null">
|
||||
and der.cust_code = #{query.cust_code}
|
||||
</if>
|
||||
<if test="query.material_code != null">
|
||||
and der.material_code = #{query.material_code}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="getPdaMaterial" resultType="java.util.Map">
|
||||
SELECT
|
||||
|
||||
@@ -22,6 +22,8 @@ public class OrderQuery extends BaseQuery<MpsSaleOrder> {
|
||||
|
||||
private String cust_code;
|
||||
|
||||
private String material_code;
|
||||
|
||||
private Boolean is_delete = false;
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
@@ -127,28 +128,29 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void excelImport(MultipartFile file, HttpServletRequest request) {
|
||||
InputStream inputStream = null;
|
||||
if(file.isEmpty()) {
|
||||
Map<String, Integer> orderSeqNoMap = new HashMap<>();
|
||||
List<MpsSaleOrder> data = new ArrayList<>();
|
||||
Map<String, String> errorMap = new HashMap<>();
|
||||
|
||||
if (file.isEmpty()) {
|
||||
throw new BadRequestException("文件为空,请添加数据后重新导入");
|
||||
}
|
||||
try {
|
||||
inputStream = file.getInputStream();
|
||||
try (InputStream inputStream = file.getInputStream()) {
|
||||
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
|
||||
List<List<Object>> read = excelReader.read();
|
||||
// 循环获取的数据
|
||||
List<MpsSaleOrder> data = new ArrayList<>();
|
||||
Map<String,String> errorMap = new HashMap();
|
||||
row:
|
||||
for(int i = 1; i < read.size(); i++) {
|
||||
|
||||
for (int i = 1; i < read.size(); i++) {
|
||||
List<Object> list = read.get(i);
|
||||
if(ObjectUtil.isEmpty(list)) {
|
||||
continue;
|
||||
}
|
||||
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
|
||||
mpsSaleOrder.setSale_id(IdUtil.getStringId());
|
||||
mpsSaleOrder.setSale_type("01");
|
||||
mpsSaleOrder.setStatus("10");
|
||||
mpsSaleOrder.setCreate_time(DateUtil.now());
|
||||
mpsSaleOrder.setConfirm_time(DateUtil.now());
|
||||
mpsSaleOrder.setIs_delete(0);
|
||||
mpsSaleOrder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
mpsSaleOrder.setCreate_name(SecurityUtils.getCurrentUsername());
|
||||
mpsSaleOrder.setAps_status("X");
|
||||
@@ -156,89 +158,121 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
||||
for(int j = 0; j < list.size(); j++) {
|
||||
String col = null == list.get(j) ? "" : String.valueOf(list.get(j));
|
||||
//存在订单编号,忽略不导入
|
||||
OrderQuery orderQuery = new OrderQuery();
|
||||
List<Map> saleCode = baseMapper.queryAll(orderQuery);
|
||||
if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")))) {
|
||||
continue;
|
||||
// List<Map> saleCode = baseMapper.queryAll(new OrderQuery());
|
||||
// if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")) && "10".equals(m.get("status")))) {
|
||||
// continue;
|
||||
// }
|
||||
if(j == 0) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("销售单号不能为空");
|
||||
}
|
||||
mpsSaleOrder.setSale_code(col);
|
||||
}
|
||||
解析cell:
|
||||
{
|
||||
if(j == 0) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("销售单号不能为空");
|
||||
}
|
||||
mpsSaleOrder.setSale_code(col);
|
||||
if(j == 1) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("合同号不能为空");
|
||||
}
|
||||
if(j == 1) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("合同号不能为空");
|
||||
}
|
||||
mpsSaleOrder.setContract_code(col);
|
||||
//mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code() + "-" + col);
|
||||
mpsSaleOrder.setContract_code(col);
|
||||
}
|
||||
if(j == 2) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("物料编号不能为空");
|
||||
}
|
||||
if(j == 2) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("规格名称不能为空");
|
||||
}
|
||||
mpsSaleOrder.setMaterial_spec(col);
|
||||
List<MdMeMaterialbase> meMaterialBases = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().like("material_spec", col));
|
||||
if(CollectionUtils.isEmpty(meMaterialBases)) {
|
||||
errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在");
|
||||
}
|
||||
else{
|
||||
Optional<MdMeMaterialbase> first = meMaterialBases.stream().findFirst();
|
||||
first.ifPresent(mdMeMaterialbase ->
|
||||
{
|
||||
//物料id
|
||||
mpsSaleOrder.setMaterial_id(mdMeMaterialbase.getMaterial_id());
|
||||
//物料编码
|
||||
mpsSaleOrder.setMaterial_code(mdMeMaterialbase.getMaterial_code());
|
||||
//计量单位
|
||||
mpsSaleOrder.setQty_unit_id(mdMeMaterialbase.getBase_unit_id());
|
||||
});
|
||||
}
|
||||
MdMeMaterialbase meMaterialBases = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", col));
|
||||
if(meMaterialBases == null) {
|
||||
errorMap.put("第" + i + "行" + col, "物料编号对应物料信息不存在");
|
||||
}
|
||||
if(j == 3) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("工段信息不能为空");
|
||||
}
|
||||
//智能一线,智能三线
|
||||
mpsSaleOrder.setProduct_area(col.contains("三") || col.contains("3") ? "A3" : "A1");
|
||||
else{
|
||||
mpsSaleOrder.setMaterial_id(meMaterialBases.getMaterial_id());
|
||||
// 物料编码
|
||||
mpsSaleOrder.setMaterial_code(meMaterialBases.getMaterial_code());
|
||||
// 计量单位
|
||||
mpsSaleOrder.setQty_unit_id(meMaterialBases.getBase_unit_id());
|
||||
mpsSaleOrder.setMaterial_spec(meMaterialBases.getMaterial_spec());
|
||||
}
|
||||
if(j == 4) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("销售数量不能为空");
|
||||
}
|
||||
mpsSaleOrder.setSale_qty(BigDecimal.valueOf(Double.parseDouble(col)));
|
||||
}
|
||||
if(j == 3) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("物料规格不能为空");
|
||||
}
|
||||
if(j == 5) {
|
||||
//计量单位
|
||||
if(StringUtils.isNotBlank(col)) {
|
||||
mpsSaleOrder.setQty_unit_name(col);
|
||||
}
|
||||
//规格校验?
|
||||
}
|
||||
if(j == 4) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("工段信息不能为空");
|
||||
}
|
||||
if(j == 6) {
|
||||
//最早开始时间(下料时间)
|
||||
if(StringUtils.isNotBlank(col)) {
|
||||
mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd"));
|
||||
}
|
||||
//智能一线,智能三线
|
||||
mpsSaleOrder.setProduct_area(col.contains("三") || col.contains("3") ? "A3" : "A1");
|
||||
}
|
||||
if(j == 5) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("销售数量不能为空");
|
||||
}
|
||||
if(j == 7) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("订单交期不能为空");
|
||||
}
|
||||
mpsSaleOrder.setPlandeliver_date(String.valueOf(DateUtil.parse(col)));
|
||||
BigDecimal saleQty = new BigDecimal(NumberUtils.isNumber(col) ? NumberUtils.toDouble(col) : 0);
|
||||
mpsSaleOrder.setSale_qty(saleQty);
|
||||
}
|
||||
if(j == 6) {
|
||||
//计量单位
|
||||
if(StringUtils.isNotBlank(col)) {
|
||||
mpsSaleOrder.setQty_unit_name(col);
|
||||
}
|
||||
if(j == 8) {
|
||||
//备注
|
||||
if(StringUtils.isNotBlank(col)) {
|
||||
mpsSaleOrder.setRemark(col);
|
||||
}
|
||||
}
|
||||
// if(j == 7) {
|
||||
// //最早开始时间(下料时间)
|
||||
// if(StringUtils.isNotBlank(col)) {
|
||||
// mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd"));
|
||||
// }
|
||||
// }
|
||||
if(j == 8) {
|
||||
if(StringUtils.isBlank(col)) {
|
||||
throw new BadRequestException("订单交期不能为空");
|
||||
}
|
||||
if(col.contains("."))
|
||||
{
|
||||
int currentYear = DateUtil.thisYear(); // 假设默认使用2023年份
|
||||
String[] dateParts = col.split("\\.");
|
||||
String month = dateParts[1];
|
||||
String day = dateParts[2];
|
||||
// 将提取的部分拼接成标准的日期格式"yyyy-MM-dd"
|
||||
String formattedDate = currentYear + "-" + month + "-" + day;
|
||||
// 使用DateUtil.parse解析日期字符串
|
||||
mpsSaleOrder.setPlandeliver_date(formattedDate);
|
||||
}
|
||||
else{
|
||||
mpsSaleOrder.setPlandeliver_date(String.valueOf(DateUtil.parse(col, "yyyy-MM-dd")));
|
||||
}
|
||||
}
|
||||
}
|
||||
// 设置明细号
|
||||
String orderCode = mpsSaleOrder.getSale_code();
|
||||
if(orderCode != null) {
|
||||
int seqNo = orderSeqNoMap.getOrDefault(orderCode, 0) + 1;
|
||||
orderSeqNoMap.put(orderCode, seqNo);
|
||||
mpsSaleOrder.setSeq_no(seqNo * 100);
|
||||
}
|
||||
OrderQuery orderQuery =new OrderQuery();
|
||||
orderQuery.setSale_code( mpsSaleOrder.getSale_code());
|
||||
orderQuery.setStatus("10");
|
||||
List<Map> salesOrders = baseMapper.queryAll(orderQuery);
|
||||
//相同订单号
|
||||
if(salesOrders.size()>0) {
|
||||
List<Map> salesOrderList = salesOrders.stream().filter(m -> mpsSaleOrder.getSale_code().equals(m.get("sale_code")) && mpsSaleOrder.getMaterial_code().equals(m.get("material_code"))).collect(Collectors.toList());
|
||||
if(salesOrderList.size()>0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
Map maxSeqNoOrder= salesOrders.stream()
|
||||
.max(Comparator.comparingInt(m -> (int) m.get("seq_no")))
|
||||
.orElse(null);
|
||||
int maxSeqNoValue = (int) maxSeqNoOrder.get("seq_no");
|
||||
mpsSaleOrder.setSeq_no(maxSeqNoValue+100);
|
||||
}
|
||||
}
|
||||
mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code()+"-"+mpsSaleOrder.getSeq_no());
|
||||
if(CollectionUtils.isEmpty(errorMap)) {
|
||||
if(null != mpsSaleOrder.getSale_code()) {
|
||||
if(mpsSaleOrder.getSale_code() != null) {
|
||||
data.add(mpsSaleOrder);
|
||||
}
|
||||
}
|
||||
@@ -246,22 +280,15 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
|
||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||
}
|
||||
}
|
||||
|
||||
this.saveBatch(data);
|
||||
}
|
||||
catch(Exception e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new BadRequestException(e.getMessage());
|
||||
}
|
||||
finally {
|
||||
if(inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
}
|
||||
catch(Exception ignored) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void update(JSONObject form) {
|
||||
MpsSaleOrder mpsSaleOrder = form.toJavaObject(MpsSaleOrder.class);
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialQZTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialTask;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
@@ -65,6 +66,8 @@ public class PdaWashController {
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
private WashSendMaterialTask washSendMaterialTask;
|
||||
@Autowired
|
||||
private WashSendMaterialQZTask washSendMaterialQZTask;
|
||||
|
||||
@PostMapping("/specList")
|
||||
@SaIgnore
|
||||
@@ -262,6 +265,13 @@ public class PdaWashController {
|
||||
washSendMaterialTask.createTask(query);
|
||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/washQzFinish")
|
||||
@Log("强制下料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> washQzFinish(@RequestBody JSONObject query) {
|
||||
washSendMaterialQZTask.createTask(query);
|
||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/washTaskFinish")
|
||||
|
||||
@@ -37,6 +37,7 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -126,14 +127,15 @@ public class WashCallEmptyTask extends AbstractAcsTask {
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(task);
|
||||
// 下发
|
||||
wms.issueTaskToAcs(data);
|
||||
Map<String, Object> stringObjectMap = wms.issueTaskToAcs(data);
|
||||
|
||||
}, "bcpcallemp", 2);
|
||||
} catch (Exception ex) {
|
||||
structattrService.update(
|
||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(StIvtStructattr::getStruct_code, task.getString("point_code3"))
|
||||
.set(StIvtStructattr::getTask_code, "")
|
||||
.eq(StIvtStructattr::getStruct_code, task.getString("point_code1"))
|
||||
);
|
||||
log.error("刻字请求异常,error:{}",ex);
|
||||
schBaseTask.setRemark(ex.getMessage());
|
||||
@@ -212,6 +214,7 @@ public class WashCallEmptyTask extends AbstractAcsTask {
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
|
||||
schBaseTask.setUpdate_time(new Date());
|
||||
schBaseTask.setIs_send(true);
|
||||
taskService.updateById(schBaseTask);
|
||||
structattrService.update(
|
||||
new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
|
||||
@@ -51,6 +51,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private WmsToAcsService wms;
|
||||
|
||||
@Override
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@@ -98,22 +99,18 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject param) {
|
||||
String start_point_code = param.getString("device_code");
|
||||
PdmProduceWorkorder order = null;
|
||||
if (StringUtils.isNotEmpty(param.getString("workorder_code"))){
|
||||
order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_code", param.getString("workorder_code"))// )
|
||||
.eq("is_delete", false)
|
||||
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
|
||||
}
|
||||
//?刻字满料请求:可以存在多个任务?
|
||||
List<SchBaseTask> tasks = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
.eq("point_code1", param.getString("device_code"))
|
||||
.eq("point_code1", "A1_CPQXJ_01_X")
|
||||
);
|
||||
|
||||
if (!CollectionUtils.isEmpty(tasks)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), "A1_CPQXJ_01_X"));
|
||||
}
|
||||
SchBaseTask washTask = null;
|
||||
String task_id = param.getString("task_id");
|
||||
if (!StringUtils.isEmpty(task_id)){
|
||||
washTask = taskService.getById(task_id);
|
||||
}
|
||||
// 查找任务状态
|
||||
String taskdtl_id = IdUtil.getStringId();
|
||||
@@ -123,29 +120,29 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
task.put("task_type", AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
|
||||
task.put("material_id", order!=null?order.getMaterial_id():"");
|
||||
task.put("material_qty", param.getBigDecimal("weight"));
|
||||
task.put("material_id", washTask!=null?washTask.getMaterial_id():"");
|
||||
task.put("material_qty", param.getBigDecimal("wegiht"));
|
||||
task.put("vehicle_code", param.getString("vehicle_code"));
|
||||
task.put("task_status", TaskStatusEnum.CREATED.getCode());
|
||||
task.put("point_code1", start_point_code);
|
||||
task.put("point_code1", "A1_CPQXJ_01_X");
|
||||
task.put("handle_class", this.getClass().getName());
|
||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
task.put("create_id", currentUserId);
|
||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("create_time", DateUtil.now());
|
||||
task.put("is_send",true);
|
||||
task.put("is_auto_issue",false);
|
||||
task.put("priority", "1");
|
||||
task.put("finished_type", "1");
|
||||
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
|
||||
task.put("table_fk_id",order!=null?order.getWorkorder_code():"");
|
||||
task.put("table_fk_id",washTask!=null?washTask.getTask_id():"");
|
||||
// 去刻字缓存区寻找空位
|
||||
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
|
||||
.eq("is_used", "1")
|
||||
.eq("region_code","A1_BCP_YC")
|
||||
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
|
||||
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
|
||||
.last("and (material_id is null or material_id = '')")
|
||||
);
|
||||
.eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
throw new BadRequestException("异常位没有可用货位");
|
||||
}
|
||||
@@ -156,7 +153,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
pointService.updateById(point);
|
||||
// 设置点位
|
||||
task.put("update_time", DateUtil.now());
|
||||
task.put("point_code2",point.getPoint_code());
|
||||
task.put("point_code3",point.getPoint_code());
|
||||
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
|
||||
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
|
||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
|
||||
@@ -174,10 +171,15 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
|
||||
@Override
|
||||
public void cancel(String task_id) {
|
||||
SchBaseTask byId = taskService.getById(task_id);
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
|
||||
.set("update_name","acs")
|
||||
.set("update_time",DateUtil.now()).eq("task_id",task_id));
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
|
||||
.set("lock_type", StatusEnum.LOCK_OFF.getCode())
|
||||
.eq("point_code",byId.getPoint_code3()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,8 +189,6 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
|
||||
public void pointConfirm(JSONObject task) {
|
||||
//
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -64,7 +64,7 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String createTask(JSONObject param) {
|
||||
if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vechile_code"))){
|
||||
if (StringUtils.isEmpty(param.getString("wegiht"))||StringUtils.isEmpty(param.getString("vechile_code"))){
|
||||
throw new BadRequestException("请求参数不能为空");
|
||||
}
|
||||
String start_point_code = "A1_CPQXJ_01_X";
|
||||
@@ -85,19 +85,16 @@ public class WashSendMaterialTask extends AbstractAcsTask {
|
||||
form.put("bill_type","0001");
|
||||
form.put("point_code",start_point_code);
|
||||
form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//半成品仓库
|
||||
form.put("total_qty",param.getString("weight"));
|
||||
form.put("total_qty",param.getString("wegiht"));
|
||||
form.put("material_id",order.getMaterial_id());
|
||||
form.put("unit_weight",byId.getNet_weight());
|
||||
form.put("storagevehicle_code",param.getString("vehicle_code"));
|
||||
form.put("storagevehicle_code",param.getString("vechile_code"));
|
||||
form.put("product_code","A1");
|
||||
form.put("auto_send",true);
|
||||
JSONObject req = new JSONObject();
|
||||
req.put("from",form);
|
||||
pdaStBcpInService.createIn(req);
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("task_step","")
|
||||
.eq("task_id",param.getString("task_id")));
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.pda.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.storage_manage.pda.service.PdaStBcpInService;
|
||||
@@ -62,7 +63,8 @@ public class PdaStBcpInController {
|
||||
@Log("呼叫空载具")
|
||||
//("呼叫空载具")
|
||||
public ResponseEntity<Object> callVehicle() {
|
||||
return new ResponseEntity<>(pdaStBcpInService.callVehicle(), HttpStatus.OK);
|
||||
pdaStBcpInService.callVehicle();
|
||||
return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/createIn")
|
||||
|
||||
@@ -48,6 +48,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -158,25 +159,21 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("message", "下发失败");
|
||||
RedissonUtils.lock(() -> {
|
||||
// 1.查入库点位
|
||||
SchBasePoint pointDao = iSchBasePointService.getOne(
|
||||
new QueryWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("半成品入库区域"))
|
||||
.eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")), false
|
||||
);
|
||||
|
||||
// 2.判断此入库点是否有正在执行的任务
|
||||
List<SchBaseTask> taskList = iSchBaseTaskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getIs_delete, false)
|
||||
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.and(qr -> qr.eq(SchBaseTask::getPoint_code1, pointDao.getPoint_code())
|
||||
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.and(qr -> qr.eq(SchBaseTask::getPoint_code1, "A1_CPQXJ_01_X")
|
||||
.or()
|
||||
.eq(SchBaseTask::getPoint_code2, pointDao.getPoint_code())
|
||||
.eq(SchBaseTask::getPoint_code3, "A1_CPQXJ_01_X")
|
||||
)
|
||||
);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(taskList)) throw new BadRequestException("有正在执行中的任务,请稍后在尝试!");
|
||||
if (ObjectUtil.isNotEmpty(taskList)) {
|
||||
throw new BadRequestException("清洗下料有正在执行中的任务,请稍后在尝试!"+taskList.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
|
||||
// 3.找一个空载具
|
||||
StIvtStructattr attrDao = structattrService.getOne(
|
||||
@@ -195,7 +192,7 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService {
|
||||
.acs_task_type("7")
|
||||
.task_group_id(IdUtil.getStringId())
|
||||
.point_code1(attrDao.getStruct_code())
|
||||
.point_code3(pointDao.getPoint_code())
|
||||
.point_code3("A1_CPQXJ_01_X")
|
||||
.vehicle_code(attrDao.getStoragevehicle_code())
|
||||
.product_area("A1") // 暂时写死
|
||||
.build();
|
||||
|
||||
@@ -97,11 +97,11 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
|
||||
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
|
||||
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
|
||||
);
|
||||
// if (ObjectUtil.isEmpty(orderDao)) {
|
||||
// throw new BadRequestException("销售单不存在!");
|
||||
// }
|
||||
if (ObjectUtil.isEmpty(orderDao)) {
|
||||
throw new BadRequestException(row.getSource_bill_code()+"对应销售单"+row.getBase_bill_code()+"_"+row.getBase_bill_table()+"不存在!");
|
||||
}
|
||||
|
||||
row.setBase_billdtl_id(orderDao==null?"":orderDao.getSale_id().toString());
|
||||
row.setBase_billdtl_id(orderDao.getSale_id());
|
||||
row.setBase_bill_code(row.getBase_bill_code());
|
||||
row.setBase_bill_type(orderDao==null?"":orderDao.getSale_type());
|
||||
row.setBase_bill_table(row.getBase_bill_table());
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
<if test="sale_id != null and sale_id != ''">
|
||||
and ivt.sale_id = #{sale_id}
|
||||
</if>
|
||||
<if test="sale_code != null and sale_code != ''">
|
||||
and ivt.sale_code = #{sale_code}
|
||||
</if>
|
||||
order by ivt.canuse_qty ASC,ivt.struct_code ASC
|
||||
</select>
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@ spring:
|
||||
password: ${DB_PWD:123456}
|
||||
|
||||
# 初始连接数
|
||||
initial-size: 30
|
||||
initial-size: 10
|
||||
# 最小连接数
|
||||
min-idle: 30
|
||||
min-idle: 10
|
||||
# 最大连接数
|
||||
max-active: 100
|
||||
# 是否自动回收超时连接
|
||||
|
||||
Reference in New Issue
Block a user