@@ -56,453 +56,477 @@ import javax.servlet.http.HttpServletRequest;
@Slf4j
public class ProducetaskServiceImpl implements ProducetaskService {
@Autowired DeviceService deviceService ;
@Autowired
DeviceService deviceService ;
@Override
public Map < String , Object > queryAll ( Map whereJson , Pageable page ) {
String search = MapUtil . getStr ( whereJson , " search " ) ;
String material_id = MapUtil . getStr ( whereJson , " material_id " ) ;
String device_id = MapUtil . getStr ( whereJson , " device_id " ) ;
String produceline_id = MapUtil . getStr ( whereJson , " produceline_id " ) ;
String cust_id = MapUtil . getStr ( whereJson , " cust_id " ) ;
String workprocedure_id = MapUtil . getStr ( whereJson , " workprocedure_id " ) ;
String producetask_status = MapUtil . getStr ( whereJson , " producetask_status " ) ;
String material_name = MapUtil . getStr ( whereJson , " material_name " ) ;
String device_name = MapUtil . getStr ( whereJson , " device_name " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " flag " , " 1 " ) ;
map . put ( " material_id " , material_id ) ;
map . put ( " device_id " , device_id ) ;
map . put ( " produceline_id " , produceline_id ) ;
map . put ( " cust_id " , cust_id ) ;
map . put ( " workprocedure_id " , workprocedure_id ) ;
map . put ( " producetask_status " , producetask_status ) ;
if ( ObjectUtil . isNotEmpty ( material_name ) ) {
map . put ( " material_name " , " % " + material_name + " % " ) ;
}
if ( ObjectUtil . isNotEmpty ( device_name ) ) {
map . put ( " device_name " , " % " + device_name + " % " ) ;
}
if ( ObjectUtil . isNotEmpty ( search ) ) {
map . put ( " search " , " % " + search + " % " ) ;
}
JSONObject json =
WQL . getWO ( " PDM_ProduceTask_01 " )
. addParamMap ( map )
. pageQuery ( WqlUtil . getHttpContext ( page ) , " task.create_time desc " ) ;
return json ;
}
@Override
public List < ProducetaskDto > queryAll ( Map whereJson ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONArray arr = wo . query ( ) . getResultJSONArray ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( arr ) ) return arr . toJavaList ( ProducetaskDto . class ) ;
return null ;
}
@Override
public ProducetaskDto findById ( Long producetask_id ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject json = wo . query ( " producetask_id = ' " + producetask_id + " ' " ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( json ) ) {
return json . toJavaObject ( ProducetaskDto . class ) ;
}
return null ;
}
@Override
public ProducetaskDto findByCode ( String code ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject json =
wo . query ( " is_delete = '0' and producetask_code =' " + code + " ' " ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( json ) ) {
return json . toJavaObject ( ProducetaskDto . class ) ;
}
return null ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void create ( ProducetaskDto dto ) {
// 编码唯一性校验
String producetask_code = dto . getProducetask_code ( ) ;
ProducetaskDto byCode = this . findByCode ( producetask_code ) ;
// if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!");
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
String material_id = dto . getMaterial_id ( ) . toString ( ) ;
// 根据物料去找木托盘类型
JSONObject materialObj =
WQLObject . getWQLObject ( " md_me_material " )
. query ( " material_id = ' " + material_id + " ' " )
. uniqueResult ( 0 ) ;
String vehicle_type = materialObj . getString ( " vehicle_type " ) ;
if ( StrUtil . isEmpty ( vehicle_type ) | | StrUtil . equals ( vehicle_type , " 0 " ) ) {
throw new RuntimeException ( " 木托盘类型不可为空! " ) ;
}
dto . setVehicle_type ( vehicle_type ) ;
dto . setProducetask_id ( IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
dto . setProducetask_code ( CodeUtil . getNewCode ( " PRODUCE_CODE " ) ) ;
dto . setCreate_id ( currentUserId ) ;
dto . setCreate_name ( nickName ) ;
dto . setUpdate_optid ( currentUserId ) ;
dto . setUpdate_optname ( nickName ) ;
dto . setUpdate_time ( now ) ;
dto . setCreate_time ( now ) ;
dto . setProducetask_status ( " 01 " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject json = JSONObject . parseObject ( JSON . toJSONString ( dto ) ) ;
wo . insert ( json ) ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void update ( ProducetaskDto dto ) {
ProducetaskDto entity = this . findById ( dto . getProducetask_id ( ) ) ;
if ( entity = = null ) throw new BadRequestException ( " 被删除或无权限,操作失败! " ) ;
// 编码唯一性校验
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
String where =
" is_delete = '0' and producetask_code = ' "
+ dto . getProducetask_code ( )
+ " ' and producetask_id != ' "
+ dto . getProducetask_id ( )
+ " ' " ;
JSONObject jsonObject = wo . query ( where ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( jsonObject ) ) {
throw new BadRequestException ( " 编码已存在! " ) ;
}
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
dto . setUpdate_time ( now ) ;
dto . setUpdate_optid ( currentUserId ) ;
dto . setUpdate_optname ( nickName ) ;
JSONObject json = JSONObject . parseObject ( JSON . toJSONString ( dto ) ) ;
wo . update ( json ) ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void deleteAll ( Long [ ] ids ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
for ( Long producetask_id : ids ) {
wo . delete ( " producetask_id = ' " + producetask_id + " ' " ) ;
}
}
@Override
public JSONArray getMaterial ( ) {
WQLObject wo = WQLObject . getWQLObject ( " md_me_material " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " update_time " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getDevice ( JSONObject param ) {
String workprocedure_id = param . getString ( " workprocedure_id " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_device " ) ;
JSONArray arr =
wo . query (
" is_delete = '0' and workprocedure_id = ' " + workprocedure_id + " ' " , " device_code " )
. getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getDevice1 ( ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_device " ) ;
JSONArray arr =
wo . query ( " is_delete = '0' and is_work_device ='1' " , " device_code " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public void copyAdd ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " producetask_id " , IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
map . put ( " producetask_code " , CodeUtil . getNewCode ( " PRODUCE_CODE " ) ) ;
map . put ( " producetask_status " , " 01 " ) ;
map . put ( " material_id " , param . getString ( " material_id " ) ) ;
map . put ( " device_id " , param . getString ( " device_id " ) ) ;
map . put ( " produceline_id " , param . getString ( " produceline_id " ) ) ;
map . put ( " cust_id " , param . getString ( " cust_id " ) ) ;
map . put ( " seq_no " , param . getString ( " seq_no " ) ) ;
map . put ( " plan_qty " , param . getString ( " plan_qty " ) ) ;
map . put ( " plan_end_time " , param . getString ( " plan_end_time " ) ) ;
map . put ( " plan_start_time " , param . getString ( " plan_start_time " ) ) ;
map . put ( " model " , param . getString ( " model " ) ) ;
map . put ( " molten_pool " , param . getString ( " molten_pool " ) ) ;
map . put ( " stewing_time " , param . getString ( " stewing_time " ) ) ;
map . put ( " create_id " , currentUserId ) ;
map . put ( " create_name " , nickName ) ;
map . put ( " create_time " , now ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
wo . insert ( map ) ;
}
@Override
public Map < String , Object > getTaskByDeviceId ( Map whereJson , Pageable page ) {
String device_id = MapUtil . getStr ( whereJson , " device_id " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " flag " , " 2 " ) ;
map . put ( " device_id " , device_id ) ;
JSONObject json =
WQL . getWO ( " PDM_ProduceTask_01 " )
. addParamMap ( map )
. pageQuery ( WqlUtil . getHttpContext ( page ) , " task.seq_no " ) ;
return json ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void sortUpdate ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONArray rows = param . getJSONArray ( " rows " ) ;
for ( int i = 0 ; i < rows . size ( ) ; i + + ) {
JSONObject jsonObject = rows . getJSONObject ( i ) ;
String producetask_id = jsonObject . getString ( " producetask_id " ) ;
String seq_no = jsonObject . getString ( " seq_no " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " seq_no " , seq_no ) ;
map . put ( " update_optid " , currentUserId ) ;
map . put ( " update_optname " , nickName ) ;
map . put ( " update_time " , now ) ;
wo . update ( map , " producetask_id = ' " + producetask_id + " ' " ) ;
}
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void mandFinish ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
String producetask_id = param . getString ( " producetask_id " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " producetask_status " , " 05 " ) ;
map . put ( " producetask_finish_type " , " 02 " ) ;
param . put ( " update_optid " , currentUserId ) ;
param . put ( " update_optname " , nickName ) ;
param . put ( " update_time " , now ) ;
wo . update ( map , " producetask_id = ' " + producetask_id + " ' " ) ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void issued ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
String producetask_id = param . getString ( " producetask_id " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
String device_id = param . getString ( " device_id " ) ;
WQLObject taskTable = WQLObject . getWQLObject ( " PDM_MG_produceTask " ) ;
JSONObject jo =
taskTable
. query ( " device_id=' " + device_id + " ' and producetask_status in ('02','03','04') " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( jo ) ) {
throw new BadRequestException ( " 该设备存在未完成的工单,不能下发! " ) ;
}
DeviceDto dto = deviceService . findById ( Long . valueOf ( device_id ) ) ;
JSONObject taskObj = new JSONObject ( ) ;
// 假如是包装的三台机械手,是将设备当作工单设备
// 假如是压机下料的机械手,则是将对接为当作工单设备
if ( StrUtil . equals ( dto . getDevice_code ( ) , " FJJXS1 " )
| | StrUtil . equals ( " FJJXS2 " , dto . getDevice_code ( ) )
| | StrUtil . equals ( " FJJXS3 " , dto . getDevice_code ( ) ) ) {
taskObj = WQL . getWO ( " PDM_ProduceTask_01 " ) . addParam ( " flag " , " 3 " ) . addParam ( " producetask_id " , producetask_id ) . process ( ) . uniqueResult ( 0 ) ;
String material_code = taskObj . getString ( " material_code " ) ;
String product_code = taskObj . getString ( " product_code " ) ;
if ( ObjectUtil . isEmpty ( product_code ) ) {
throw new BadRequestException ( " 物料【 " + material_code + " 】的垛形参数未设置! " ) ;
}
} else {
taskObj = WQL . getWO ( " PDM_ProduceTask_01 " ) . addParam ( " flag " , " 4 " ) . addParam ( " producetask_id " , producetask_id ) . process ( ) . uniqueResult ( 0 ) ;
}
taskObj . put ( " product_type " , " wms " ) ;
WmsToAcsService wmsToAcsService = SpringContextHolder . getBean ( WmsToAcsService . class ) ;
JSONArray arr = new JSONArray ( ) ;
arr . add ( taskObj ) ;
Map < String , Object > result = wmsToAcsService . sendProduceTask ( arr ) ;
if ( result . get ( " status " ) . toString ( ) . equals ( " 400 " ) ) {
String message = result . get ( " message " ) . toString ( ) ;
throw new BadRequestException ( message ) ;
}
JSONObject map = new JSONObject ( ) ;
String producetask_status = " 02 " ;
// 压机一
if ( StrUtil . equals ( device_id , " 1560189462410039296 " ) ) {
producetask_status = " 04 " ;
}
map . put ( " producetask_status " , producetask_status ) ;
map . put ( " update_optid " , currentUserId ) ;
map . put ( " update_optname " , nickName ) ;
map . put ( " update_time " , now ) ;
wo . update ( map , " producetask_id = ' " + producetask_id + " ' " ) ;
}
@Override
public void synchro ( JSONObject param ) {
WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl ( ) ;
JSONObject jo = new JSONObject ( ) ;
jo . put ( " startdate " , DateUtil . today ( ) ) ;
jo . put ( " enddate " , DateUtil . today ( ) ) ;
wmsToJnService . synchroDaySchedule ( jo ) ;
}
@Override
public JSONArray getProduceline ( ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_produceline " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " produceline_code " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getCust ( ) {
WQLObject wo = WQLObject . getWQLObject ( " MD_CS_CustomerBase " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " update_time " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getWorkprocedure ( ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_workprocedure " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " seq_no " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void excelImport ( MultipartFile file , HttpServletRequest request ) {
if ( file . isEmpty ( ) ) {
throw new BadRequestException ( " 文件为空,请添加数据后重新导入 " ) ;
}
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
// 1.获取上传文件输入流
InputStream inputStream = null ;
try {
inputStream = file . getInputStream ( ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
WQLObject wo = WQLObject . getWQLObject ( " PDM_MG_produceTask " ) ;
WQLObject wo_material = WQLObject . getWQLObject ( " MD_ME_Material " ) ;
WQLObject wo_device = WQLObject . getWQLObject ( " pdm_base_device " ) ;
WQLObject wo_line = WQLObject . getWQLObject ( " pdm_base_produceline " ) ;
WQLObject wo_cust = WQLObject . getWQLObject ( " md_cs_customerbase " ) ;
// 调用用 hutool 方法读取数据 默认调用第一个sheet
ExcelReader excelReader = ExcelUtil . getReader ( inputStream ) ;
// 从第二行开始获取数据 excelReader.read的结果是一个2纬的list, 外层是行, 内层是行对应的所有列
List < List < Object > > read = excelReader . read ( 1 , excelReader . getRowCount ( ) ) ;
// 循环获取的数据
for ( int i = 0 ; i < read . size ( ) ; i + + ) {
List list = read . get ( i ) ;
JSONObject param = new JSONObject ( ) ;
// 按照列获取
param . put ( " producetask_id " , IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
param . put ( " producetask_code " , CodeUtil . getNewCode ( " PRODUCE_CODE " ) ) ;
param . put ( " producetask_status " , " 01 " ) ;
String material_code = list . get ( 0 ) . toString ( ) ;
JSONObject json_material =
wo_material
. query ( " is_delete = '0' and material_code = ' " + material_code + " ' " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_material ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,物料编码不存在 " ) ;
}
param . put ( " material_id " , json_material . getString ( " material_id " ) ) ;
String device_code = list . get ( 1 ) . toString ( ) ;
JSONObject json_device =
wo_device
. query ( " is_delete = '0' and device_code = ' " + device_code + " ' " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_device ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,设备编码不存在 " ) ;
}
param . put ( " device_id " , json_device . getString ( " device_id " ) ) ;
String produceline_code = list . get ( 2 ) . toString ( ) ;
JSONObject json_produceline =
wo_line
. query ( " is_delete = '0' and produceline_code = ' " + produceline_code + " ' " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_produceline ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,产线编码不存在 " ) ;
}
param . put ( " produceline_id " , json_produceline . getString ( " produceline_id " ) ) ;
String cust_code = list . get ( 3 ) . toString ( ) ;
JSONObject json_cust =
wo_cust . query ( " is_delete = '0' and cust_code = ' " + cust_code + " ' " ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_cust ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,客户编码不存在 " ) ;
}
param . put ( " cust_id " , json_cust . getString ( " cust_id " ) ) ;
param . put ( " seq_no " , list . get ( 4 ) . toString ( ) ) ;
param . put ( " plan_qty " , list . get ( 5 ) . toString ( ) ) ;
if ( ObjectUtil . isEmpty ( list . get ( 6 ) ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划开始时间不能为空 " ) ;
} else {
if ( this . isLegalTime ( list . get ( 6 ) . toString ( ) ) ) {
param . put ( " plan_start_time " , list . get ( 6 ) . toString ( ) ) ;
} else {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划开始时间日期格式不正确 " ) ;
@Override
public Map < String , Object > queryAll ( Map whereJson , Pageable page ) {
String search = MapUtil . getStr ( whereJson , " search " ) ;
String material_id = MapUtil . getStr ( whereJson , " material_id " ) ;
String device_id = MapUtil . getStr ( whereJson , " device_id " ) ;
String produceline_id = MapUtil . getStr ( whereJson , " produceline_id " ) ;
String cust_id = MapUtil . getStr ( whereJson , " cust_id " ) ;
String workprocedure_id = MapUtil . getStr ( whereJson , " workprocedure_id " ) ;
String producetask_status = MapUtil . getStr ( whereJson , " producetask_status " ) ;
String material_name = MapUtil . getStr ( whereJson , " material_name " ) ;
String device_name = MapUtil . getStr ( whereJson , " device_name " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " flag " , " 1 " ) ;
map . put ( " material_id " , material_id ) ;
map . put ( " device_id " , device_id ) ;
map . put ( " produceline_id " , produceline_id ) ;
map . put ( " cust_id " , cust_id ) ;
map . put ( " workprocedure_id " , workprocedure_id ) ;
map . put ( " producetask_status " , producetask_status ) ;
if ( ObjectUtil . isNotEmpty ( material_name ) ) {
map . put ( " material_name " , " % " + material_name + " % " ) ;
}
}
if ( ObjectUtil . isEmpty ( list . get ( 7 ) ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划结束时间不能为空 " ) ;
} else {
if ( this . isLegalTime ( list . get ( 7 ) . toString ( ) ) ) {
param . put ( " plan_end_time " , list . get ( 7 ) . toString ( ) ) ;
} else {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划结束时间日期格式不正确 " ) ;
if ( ObjectUtil . isNotEmpty ( device_name ) ) {
map . put ( " device_name " , " % " + device_name + " % " ) ;
}
}
param . put ( " model " , list . get ( 8 ) . toString ( ) ) ;
param . put ( " molten_pool " , list . get ( 9 ) . toString ( ) ) ;
param . put ( " create_id " , currentUserId ) ;
param . put ( " create_name " , nickName ) ;
param . put ( " create_time " , now ) ;
wo . insert ( param ) ;
if ( ObjectUtil . isNotEmpty ( search ) ) {
map . put ( " search " , " % " + search + " % " ) ;
}
JSONObject json =
WQL . getWO ( " PDM_ProduceTask_01 " )
. addParamMap ( map )
. pageQuery ( WqlUtil . getHttpContext ( page ) , " task.create_time desc " ) ;
return json ;
}
}
public boolean isLegalTime ( String str ) {
String formatTime =
" ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9]$ " ;
Pattern p = Pattern . compile ( formatTime ) ;
Matcher m = p . matcher ( str ) ;
return m . matches ( ) ;
}
@Override
public List < ProducetaskDto > queryAll ( Map whereJson ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONArray arr = wo . query ( ) . getResultJSONArray ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( arr ) ) return arr . toJavaList ( ProducetaskDto . class ) ;
return null ;
}
@Override
public ProducetaskDto findById ( Long producetask_id ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject json = wo . query ( " producetask_id = ' " + producetask_id + " ' " ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( json ) ) {
return json . toJavaObject ( ProducetaskDto . class ) ;
}
return null ;
}
@Override
public ProducetaskDto findByCode ( String code ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject json =
wo . query ( " is_delete = '0' and producetask_code =' " + code + " ' " ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( json ) ) {
return json . toJavaObject ( ProducetaskDto . class ) ;
}
return null ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void create ( ProducetaskDto dto ) {
// 编码唯一性校验
String producetask_code = dto . getProducetask_code ( ) ;
ProducetaskDto byCode = this . findByCode ( producetask_code ) ;
// if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!");
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
if ( ObjectUtil . isEmpty ( dto . getMaterial_id ( ) ) ) {
throw new BadRequestException ( " 物料不能为空! " ) ;
}
String material_id = dto . getMaterial_id ( ) . toString ( ) ;
// 根据物料去找木托盘类型
JSONObject materialObj =
WQLObject . getWQLObject ( " md_me_material " )
. query ( " material_id = ' " + material_id + " ' " )
. uniqueResult ( 0 ) ;
String vehicle_type = materialObj . getString ( " vehicle_type " ) ;
if ( StrUtil . isEmpty ( vehicle_type ) | | StrUtil . equals ( vehicle_type , " 0 " ) ) {
throw new RuntimeException ( " 木托盘类型不可为空! " ) ;
}
if ( vehicle_type . equals ( " 1 " ) ) {
dto . setVehicle_type ( " 03 " ) ;
} else if ( vehicle_type . equals ( " 2 " ) ) {
dto . setVehicle_type ( " 04 " ) ;
} else if ( vehicle_type . equals ( " 3 " ) ) {
dto . setVehicle_type ( " 05 " ) ;
} else if ( vehicle_type . equals ( " 4 " ) ) {
dto . setVehicle_type ( " 06 " ) ;
} else if ( vehicle_type . equals ( " 5 " ) ) {
dto . setVehicle_type ( " 07 " ) ;
}
if ( ObjectUtil . isEmpty ( dto . getVehicle_type ( ) ) ) {
dto . setVehicle_type ( vehicle_type ) ;
}
dto . setProducetask_id ( IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
dto . setProducetask_code ( CodeUtil . getNewCode ( " PRODUCE_CODE " ) ) ;
dto . setCreate_id ( currentUserId ) ;
dto . setCreate_name ( nickName ) ;
dto . setUpdate_optid ( currentUserId ) ;
dto . setUpdate_optname ( nickName ) ;
dto . setUpdate_time ( now ) ;
dto . setCreate_time ( now ) ;
dto . setProducetask_status ( " 01 " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject json = JSONObject . parseObject ( JSON . toJSONString ( dto ) ) ;
wo . insert ( json ) ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void update ( ProducetaskDto dto ) {
ProducetaskDto entity = this . findById ( dto . getProducetask_id ( ) ) ;
if ( entity = = null ) throw new BadRequestException ( " 被删除或无权限,操作失败! " ) ;
// 编码唯一性校验
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
String where =
" is_delete = '0' and producetask_code = ' "
+ dto . getProducetask_code ( )
+ " ' and producetask_id != ' "
+ dto . getProducetask_id ( )
+ " ' " ;
JSONObject jsonObject = wo . query ( where ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( jsonObject ) ) {
throw new BadRequestException ( " 编码已存在! " ) ;
}
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
dto . setUpdate_time ( now ) ;
dto . setUpdate_optid ( currentUserId ) ;
dto . setUpdate_optname ( nickName ) ;
JSONObject json = JSONObject . parseObject ( JSON . toJSONString ( dto ) ) ;
wo . update ( json ) ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void deleteAll ( Long [ ] ids ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
for ( Long producetask_id : ids ) {
wo . delete ( " producetask_id = ' " + producetask_id + " ' " ) ;
}
}
@Override
public JSONArray getMaterial ( ) {
WQLObject wo = WQLObject . getWQLObject ( " md_me_material " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " update_time " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getDevice ( JSONObject param ) {
String workprocedure_id = param . getString ( " workprocedure_id " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_device " ) ;
JSONArray arr =
wo . query (
" is_delete = '0' and workprocedure_id = ' " + workprocedure_id + " ' " , " device_code " )
. getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getDevice1 ( ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_device " ) ;
JSONArray arr =
wo . query ( " is_delete = '0' and is_work_device ='1' " , " device_code " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public void copyAdd ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " producetask_id " , IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
map . put ( " producetask_code " , CodeUtil . getNewCode ( " PRODUCE_CODE " ) ) ;
map . put ( " producetask_status " , " 01 " ) ;
map . put ( " material_id " , param . getString ( " material_id " ) ) ;
map . put ( " device_id " , param . getString ( " device_id " ) ) ;
map . put ( " produceline_id " , param . getString ( " produceline_id " ) ) ;
map . put ( " cust_id " , param . getString ( " cust_id " ) ) ;
map . put ( " seq_no " , param . getString ( " seq_no " ) ) ;
map . put ( " plan_qty " , param . getString ( " plan_qty " ) ) ;
map . put ( " plan_end_time " , param . getString ( " plan_end_time " ) ) ;
map . put ( " plan_start_time " , param . getString ( " plan_start_time " ) ) ;
map . put ( " model " , param . getString ( " model " ) ) ;
map . put ( " molten_pool " , param . getString ( " molten_pool " ) ) ;
map . put ( " stewing_time " , param . getString ( " stewing_time " ) ) ;
map . put ( " create_id " , currentUserId ) ;
map . put ( " create_name " , nickName ) ;
map . put ( " create_time " , now ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
wo . insert ( map ) ;
}
@Override
public Map < String , Object > getTaskByDeviceId ( Map whereJson , Pageable page ) {
String device_id = MapUtil . getStr ( whereJson , " device_id " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " flag " , " 2 " ) ;
map . put ( " device_id " , device_id ) ;
JSONObject json =
WQL . getWO ( " PDM_ProduceTask_01 " )
. addParamMap ( map )
. pageQuery ( WqlUtil . getHttpContext ( page ) , " task.seq_no " ) ;
return json ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void sortUpdate ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONArray rows = param . getJSONArray ( " rows " ) ;
for ( int i = 0 ; i < rows . size ( ) ; i + + ) {
JSONObject jsonObject = rows . getJSONObject ( i ) ;
String producetask_id = jsonObject . getString ( " producetask_id " ) ;
String seq_no = jsonObject . getString ( " seq_no " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " seq_no " , seq_no ) ;
map . put ( " update_optid " , currentUserId ) ;
map . put ( " update_optname " , nickName ) ;
map . put ( " update_time " , now ) ;
wo . update ( map , " producetask_id = ' " + producetask_id + " ' " ) ;
}
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void mandFinish ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
String producetask_id = param . getString ( " producetask_id " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
JSONObject map = new JSONObject ( ) ;
map . put ( " producetask_status " , " 05 " ) ;
map . put ( " producetask_finish_type " , " 02 " ) ;
param . put ( " update_optid " , currentUserId ) ;
param . put ( " update_optname " , nickName ) ;
param . put ( " update_time " , now ) ;
wo . update ( map , " producetask_id = ' " + producetask_id + " ' " ) ;
}
@Override
public synchronized void issued ( JSONObject param ) {
ProducetaskService producetaskService = SpringContextHolder . getBean ( ProducetaskService . class ) ;
producetaskService . transSyn ( param ) ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void transSyn ( JSONObject param ) {
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
String producetask_id = param . getString ( " producetask_id " ) ;
WQLObject wo = WQLObject . getWQLObject ( " pdm_mg_producetask " ) ;
String device_id = param . getString ( " device_id " ) ;
WQLObject taskTable = WQLObject . getWQLObject ( " PDM_MG_produceTask " ) ;
JSONObject jo =
taskTable
. query ( " device_id=' " + device_id + " ' and producetask_status in ('02','03','04') " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isNotEmpty ( jo ) ) {
throw new BadRequestException ( " 该设备存在未完成的工单,不能下发! " ) ;
}
DeviceDto dto = deviceService . findById ( Long . valueOf ( device_id ) ) ;
JSONObject taskObj = new JSONObject ( ) ;
// 假如是包装的三台机械手,是将设备当作工单设备
// 假如是压机下料的机械手,则是将对接为当作工单设备
if ( StrUtil . equals ( dto . getDevice_code ( ) , " FJJXS1 " )
| | StrUtil . equals ( " FJJXS2 " , dto . getDevice_code ( ) )
| | StrUtil . equals ( " FJJXS3 " , dto . getDevice_code ( ) ) ) {
taskObj = WQL . getWO ( " PDM_ProduceTask_01 " ) . addParam ( " flag " , " 3 " ) . addParam ( " producetask_id " , producetask_id ) . process ( ) . uniqueResult ( 0 ) ;
String material_code = taskObj . getString ( " material_code " ) ;
String product_code = taskObj . getString ( " product_code " ) ;
if ( ObjectUtil . isEmpty ( product_code ) ) {
throw new BadRequestException ( " 物料【 " + material_code + " 】的垛形参数未设置! " ) ;
}
} else {
taskObj = WQL . getWO ( " PDM_ProduceTask_01 " ) . addParam ( " flag " , " 4 " ) . addParam ( " producetask_id " , producetask_id ) . process ( ) . uniqueResult ( 0 ) ;
}
taskObj . put ( " product_type " , " wms " ) ;
WmsToAcsService wmsToAcsService = SpringContextHolder . getBean ( WmsToAcsService . class ) ;
JSONArray arr = new JSONArray ( ) ;
arr . add ( taskObj ) ;
Map < String , Object > result = wmsToAcsService . sendProduceTask ( arr ) ;
if ( result . get ( " status " ) . toString ( ) . equals ( " 400 " ) ) {
String message = result . get ( " message " ) . toString ( ) ;
throw new BadRequestException ( message ) ;
}
JSONObject map = new JSONObject ( ) ;
String producetask_status = " 02 " ;
// 压机一
if ( StrUtil . equals ( device_id , " 1560189462410039296 " ) ) {
producetask_status = " 04 " ;
}
map . put ( " producetask_status " , producetask_status ) ;
map . put ( " update_optid " , currentUserId ) ;
map . put ( " update_optname " , nickName ) ;
map . put ( " update_time " , now ) ;
wo . update ( map , " producetask_id = ' " + producetask_id + " ' " ) ;
}
@Override
public void synchro ( JSONObject param ) {
WmsToJnServiceImpl wmsToJnService = new WmsToJnServiceImpl ( ) ;
JSONObject jo = new JSONObject ( ) ;
jo . put ( " startdate " , DateUtil . today ( ) ) ;
jo . put ( " enddate " , DateUtil . today ( ) ) ;
wmsToJnService . synchroDaySchedule ( jo ) ;
}
@Override
public JSONArray getProduceline ( ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_produceline " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " produceline_code " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getCust ( ) {
WQLObject wo = WQLObject . getWQLObject ( " MD_CS_CustomerBase " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " update_time " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
public JSONArray getWorkprocedure ( ) {
WQLObject wo = WQLObject . getWQLObject ( " pdm_base_workprocedure " ) ;
JSONArray arr = wo . query ( " is_delete = '0' " , " seq_no " ) . getResultJSONArray ( 0 ) ;
return arr ;
}
@Override
@Transactional ( rollbackFor = Exception . class )
public void excelImport ( MultipartFile file , HttpServletRequest request ) {
if ( file . isEmpty ( ) ) {
throw new BadRequestException ( " 文件为空,请添加数据后重新导入 " ) ;
}
Long currentUserId = UserInfoUtil . getCurrentUserId ( ) ;
String nickName = UserInfoUtil . getNickName ( ) ;
String now = DateUtil . now ( ) ;
// 1.获取上传文件输入流
InputStream inputStream = null ;
try {
inputStream = file . getInputStream ( ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
WQLObject wo = WQLObject . getWQLObject ( " PDM_MG_produceTask " ) ;
WQLObject wo_material = WQLObject . getWQLObject ( " MD_ME_Material " ) ;
WQLObject wo_device = WQLObject . getWQLObject ( " pdm_base_device " ) ;
WQLObject wo_line = WQLObject . getWQLObject ( " pdm_base_produceline " ) ;
WQLObject wo_cust = WQLObject . getWQLObject ( " md_cs_customerbase " ) ;
// 调用用 hutool 方法读取数据 默认调用第一个sheet
ExcelReader excelReader = ExcelUtil . getReader ( inputStream ) ;
// 从第二行开始获取数据 excelReader.read的结果是一个2纬的list, 外层是行, 内层是行对应的所有列
List < List < Object > > read = excelReader . read ( 1 , excelReader . getRowCount ( ) ) ;
// 循环获取的数据
for ( int i = 0 ; i < read . size ( ) ; i + + ) {
List list = read . get ( i ) ;
JSONObject param = new JSONObject ( ) ;
// 按照列获取
param . put ( " producetask_id " , IdUtil . getSnowflake ( 1 , 1 ) . nextId ( ) ) ;
param . put ( " producetask_code " , CodeUtil . getNewCode ( " PRODUCE_CODE " ) ) ;
param . put ( " producetask_status " , " 01 " ) ;
String material_code = list . get ( 0 ) . toString ( ) ;
JSONObject json_material =
wo_material
. query ( " is_delete = '0' and material_code = ' " + material_code + " ' " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_material ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,物料编码不存在 " ) ;
}
param . put ( " material_id " , json_material . getString ( " material_id " ) ) ;
String device_code = list . get ( 1 ) . toString ( ) ;
JSONObject json_device =
wo_device
. query ( " is_delete = '0' and device_code = ' " + device_code + " ' " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_device ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,设备编码不存在 " ) ;
}
param . put ( " device_id " , json_device . getString ( " device_id " ) ) ;
String produceline_code = list . get ( 2 ) . toString ( ) ;
JSONObject json_produceline =
wo_line
. query ( " is_delete = '0' and produceline_code = ' " + produceline_code + " ' " )
. uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_produceline ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,产线编码不存在 " ) ;
}
param . put ( " produceline_id " , json_produceline . getString ( " produceline_id " ) ) ;
String cust_code = list . get ( 3 ) . toString ( ) ;
JSONObject json_cust =
wo_cust . query ( " is_delete = '0' and cust_code = ' " + cust_code + " ' " ) . uniqueResult ( 0 ) ;
if ( ObjectUtil . isEmpty ( json_cust ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,客户编码不存在 " ) ;
}
param . put ( " cust_id " , json_cust . getString ( " cust_id " ) ) ;
param . put ( " seq_no " , list . get ( 4 ) . toString ( ) ) ;
param . put ( " plan_qty " , list . get ( 5 ) . toString ( ) ) ;
if ( ObjectUtil . isEmpty ( list . get ( 6 ) ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划开始时间不能为空 " ) ;
} else {
if ( this . isLegalTime ( list . get ( 6 ) . toString ( ) ) ) {
param . put ( " plan_start_time " , list . get ( 6 ) . toString ( ) ) ;
} else {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划开始时间日期格式不正确 " ) ;
}
}
if ( ObjectUtil . isEmpty ( list . get ( 7 ) ) ) {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划结束时间不能为空 " ) ;
} else {
if ( this . isLegalTime ( list . get ( 7 ) . toString ( ) ) ) {
param . put ( " plan_end_time " , list . get ( 7 ) . toString ( ) ) ;
} else {
throw new BadRequestException ( " 第' " + ( i + 2 ) + " '行,计划结束时间日期格式不正确 " ) ;
}
}
param . put ( " model " , list . get ( 8 ) . toString ( ) ) ;
param . put ( " molten_pool " , list . get ( 9 ) . toString ( ) ) ;
param . put ( " create_id " , currentUserId ) ;
param . put ( " create_name " , nickName ) ;
param . put ( " create_time " , now ) ;
wo . insert ( param ) ;
}
}
public boolean isLegalTime ( String str ) {
String formatTime =
" ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9]$ " ;
Pattern p = Pattern . compile ( formatTime ) ;
Matcher m = p . matcher ( str ) ;
return m . matches ( ) ;
}
}